minimig: refactoring.

This commit is contained in:
sorgelig
2019-10-06 07:35:36 +08:00
parent 9a82ff8902
commit 56bf758b09
5 changed files with 62 additions and 81 deletions

View File

@@ -784,7 +784,6 @@ void HandleUI(void)
switch (user_io_core_type())
{
case CORE_TYPE_MIST:
case CORE_TYPE_MINIMIG2:
case CORE_TYPE_8BIT:
case CORE_TYPE_SHARPMZ:
case CORE_TYPE_ARCHIE:
@@ -1081,7 +1080,6 @@ void HandleUI(void)
{
SelectFile(0, SCANO_CORES, MENU_CORE_FILE_SELECTED1, MENU_NONE1);
}
else if (user_io_core_type() == CORE_TYPE_MINIMIG2) menustate = MENU_MAIN1;
else if (user_io_core_type() == CORE_TYPE_MIST) menustate = MENU_MIST_MAIN1;
else if (user_io_core_type() == CORE_TYPE_ARCHIE) menustate = MENU_ARCHIE_MAIN1;
else {
@@ -1090,6 +1088,10 @@ void HandleUI(void)
OsdCoreNameSet("");
SelectFile(0, SCANO_CORES, MENU_CORE_FILE_SELECTED1, MENU_SYSTEM1);
}
else if (is_minimig())
{
menustate = MENU_MAIN1;
}
else
{
if ((get_key_mod() & (LGUI | RGUI)) && !is_x86_core() && has_menu()) //Win+Menu
@@ -1695,7 +1697,7 @@ void HandleUI(void)
}
m = 0;
if (user_io_core_type() == CORE_TYPE_MINIMIG2)
if (is_minimig())
{
m = 1;
menumask &= ~0x100;
@@ -1852,10 +1854,6 @@ void HandleUI(void)
{
// go back to core requesting this menu
switch (user_io_core_type()) {
case CORE_TYPE_MINIMIG2:
menusub = 0;
menustate = MENU_MAIN1;
break;
case CORE_TYPE_MIST:
menusub = 5;
menustate = MENU_MIST_MAIN1;
@@ -1865,8 +1863,16 @@ void HandleUI(void)
menustate = MENU_ARCHIE_MAIN1;
break;
case CORE_TYPE_8BIT:
menusub = 0;
menustate = MENU_8BIT_MAIN1;
if (is_minimig())
{
menusub = 0;
menustate = MENU_MAIN1;
}
else
{
menusub = 0;
menustate = MENU_8BIT_MAIN1;
}
break;
case CORE_TYPE_SHARPMZ:
menusub = menusub_last;
@@ -2033,11 +2039,8 @@ void HandleUI(void)
else if (right)
{
// go back to core requesting this menu
switch (user_io_core_type()) {
case CORE_TYPE_MINIMIG2:
menusub = 0;
menustate = MENU_MAIN1;
break;
switch (user_io_core_type())
{
case CORE_TYPE_MIST:
menusub = 5;
menustate = MENU_MIST_MAIN1;
@@ -2047,8 +2050,16 @@ void HandleUI(void)
menustate = MENU_ARCHIE_MAIN1;
break;
case CORE_TYPE_8BIT:
menusub = 0;
menustate = MENU_8BIT_MAIN1;
if (is_minimig())
{
menusub = 0;
menustate = MENU_MAIN1;
}
else
{
menusub = 0;
menustate = MENU_8BIT_MAIN1;
}
break;
case CORE_TYPE_SHARPMZ:
menusub = menusub_last;
@@ -2313,7 +2324,6 @@ void HandleUI(void)
OsdWrite(12, s, 0, 0, 1);
s[0] = 0;
if (user_io_core_type() != CORE_TYPE_MINIMIG2)
{
int len = strlen(OsdCoreName());
if (len > 30) len = 30;
@@ -3226,7 +3236,7 @@ void HandleUI(void)
/******************************************************************/
case MENU_RESET1:
m = 0;
if (user_io_core_type() == CORE_TYPE_MINIMIG2) m = 1;
if (is_minimig()) m = 1;
helptext = helptexts[HELPTEXT_NONE];
OsdSetTitle("Reset", 0);
menumask = 0x03; // Yes / No
@@ -3246,7 +3256,7 @@ void HandleUI(void)
case MENU_RESET2:
m = 0;
if (user_io_core_type() == CORE_TYPE_MINIMIG2) m = 1;
if (is_minimig()) m = 1;
if (user_io_core_type() == CORE_TYPE_SHARPMZ) m = 2;
if (select && menusub == 0)

21
spi.cpp
View File

@@ -190,27 +190,6 @@ void spi_osd_cmd8(uint8_t cmd, uint8_t parm)
DisableOsd();
}
void spi_osd_cmd16(uint8_t cmd, uint16_t parm)
{
EnableOsd();
spi8(cmd);
spi_w(parm);
DisableOsd();
}
void spi_osd_cmd32_cont(uint8_t cmd, uint32_t parm)
{
EnableOsd();
spi8(cmd);
spi32(parm);
}
void spi_osd_cmd32(uint8_t cmd, uint32_t parm)
{
spi_osd_cmd32_cont(cmd, parm);
DisableOsd();
}
void spi_uio_cmd32le_cont(uint8_t cmd, uint32_t parm)
{
EnableIO();

3
spi.h
View File

@@ -49,9 +49,6 @@ void spi_osd_cmd_cont(uint8_t cmd);
void spi_osd_cmd(uint8_t cmd);
void spi_osd_cmd8_cont(uint8_t cmd, uint8_t parm);
void spi_osd_cmd8(uint8_t cmd, uint8_t parm);
void spi_osd_cmd16(uint8_t cmd, uint16_t parm);
void spi_osd_cmd32_cont(uint8_t cmd, uint32_t parm);
void spi_osd_cmd32(uint8_t cmd, uint32_t parm);
/* User_io related SPI functions */
uint8_t spi_uio_cmd_cont(uint8_t cmd);

View File

@@ -171,11 +171,6 @@ unsigned char user_io_core_type()
return core_type;
}
char is_minimig()
{
return(core_type == CORE_TYPE_MINIMIG2);
}
char is_archie()
{
return(core_type == CORE_TYPE_ARCHIE);
@@ -210,9 +205,6 @@ const char *user_io_get_core_name_ex()
{
switch (user_io_core_type())
{
case CORE_TYPE_MINIMIG2:
return "MINIMIG";
case CORE_TYPE_MIST:
return "ST";
@@ -271,6 +263,13 @@ char is_neogeo_core()
return (is_neogeo_type == 1);
}
static int is_minimig_type = 0;
char is_minimig()
{
if (!is_minimig_type) is_minimig_type = strcasecmp(core_name, "minimig") ? 2 : 1;
return (is_minimig_type == 1);
}
static int is_no_type = 0;
static int disable_osd = 0;
char has_menu()
@@ -290,6 +289,7 @@ static void user_io_read_core_name()
is_cpc_type = 0;
is_zx81_type = 0;
is_neogeo_type = 0;
is_minimig_type = 0;
core_name[0] = 0;
// get core name
@@ -678,7 +678,6 @@ void user_io_init(const char *path)
}
if ((core_type != CORE_TYPE_DUMB) &&
(core_type != CORE_TYPE_MINIMIG2) &&
(core_type != CORE_TYPE_MIST) &&
(core_type != CORE_TYPE_ARCHIE) &&
(core_type != CORE_TYPE_8BIT) &&
@@ -698,7 +697,6 @@ void user_io_init(const char *path)
// set core name. This currently only sets a name for the 8 bit cores
user_io_read_core_name();
spi_uio_cmd16(UIO_SET_MEMSZ, sdram_sz(-1));
// send a reset
@@ -729,12 +727,6 @@ void user_io_init(const char *path)
puts("Identified core without user interface");
break;
case CORE_TYPE_MINIMIG2:
puts("Identified Minimig V2 core");
spi_uio_cmd16(UIO_SET_MEMSZ, sdram_sz(-1));
BootInit();
break;
case CORE_TYPE_MIST:
puts("Identified MiST core");
ikbd_init();
@@ -784,7 +776,12 @@ void user_io_init(const char *path)
}
else
{
if (is_x86_core())
if (is_minimig())
{
puts("Identified Minimig V2 core");
BootInit();
}
else if (is_x86_core())
{
x86_config_load();
x86_init();
@@ -2061,8 +2058,7 @@ void cd_generate_toc(uint16_t req_type, uint8_t *buffer)
void user_io_poll()
{
if ((core_type != CORE_TYPE_MINIMIG2) &&
(core_type != CORE_TYPE_MIST) &&
if ((core_type != CORE_TYPE_MIST) &&
(core_type != CORE_TYPE_ARCHIE) &&
(core_type != CORE_TYPE_SHARPMZ) &&
(core_type != CORE_TYPE_8BIT))
@@ -2090,7 +2086,7 @@ void user_io_poll()
user_io_send_buttons(0);
if (core_type == CORE_TYPE_MINIMIG2)
if (is_minimig())
{
//HDD & FDD query
unsigned char c1, c2;
@@ -2581,7 +2577,7 @@ void user_io_poll()
if (core_type == CORE_TYPE_SHARPMZ) sharpmz_poll();
static uint8_t leds = 0;
if(use_ps2ctl && core_type != CORE_TYPE_MINIMIG2)
if(use_ps2ctl && !is_minimig())
{
leds |= (KBD_LED_FLAG_STATUS | KBD_LED_CAPS_CONTROL);
@@ -2814,7 +2810,7 @@ void user_io_poll()
static void send_keycode(unsigned short key, int press)
{
if (core_type == CORE_TYPE_MINIMIG2)
if (is_minimig())
{
if (press > 1) return;
@@ -3020,17 +3016,20 @@ void user_io_mouse(unsigned char b, int16_t x, int16_t y, int16_t w)
{
switch (core_type)
{
case CORE_TYPE_MINIMIG2:
mouse_pos[X] += x;
mouse_pos[Y] += y;
mouse_flags |= 0x80 | (b & 7);
return;
case CORE_TYPE_8BIT:
mouse_pos[X] += x;
mouse_pos[Y] -= y; // ps2 y axis is reversed over usb
mouse_wheel += w;
mouse_flags |= 0x08 | (b & 7);
if (is_minimig())
{
mouse_pos[X] += x;
mouse_pos[Y] += y;
mouse_flags |= 0x80 | (b & 7);
}
else
{
mouse_pos[X] += x;
mouse_pos[Y] -= y; // ps2 y axis is reversed over usb
mouse_wheel += w;
mouse_flags |= 0x08 | (b & 7);
}
return;
case CORE_TYPE_MIST:
@@ -3072,13 +3071,10 @@ void user_io_check_reset(unsigned short modifiers, char useKeys)
else
switch (core_type)
{
case CORE_TYPE_MINIMIG2:
minimig_reset();
break;
case CORE_TYPE_ARCHIE:
case CORE_TYPE_8BIT:
kbd_reset = 1;
if(is_minimig()) minimig_reset();
else kbd_reset = 1;
break;
}
}

View File

@@ -150,7 +150,6 @@
#define CORE_TYPE_DUMB 0xa0 // core without any io controller interaction
#define CORE_TYPE_MIST 0xa3 // mist atari st core
#define CORE_TYPE_8BIT 0xa4 // generic core
#define CORE_TYPE_MINIMIG2 0xa5 // new Minimig with AGA
#define CORE_TYPE_ARCHIE 0xa6 // Acorn Archimedes
#define CORE_TYPE_SHARPMZ 0xa7 // Sharp MZ Series
#define CORE_TYPE_8BIT2 0xa8 // generic core using dual SDRAM