mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-28 12:11:50 +01:00
commit
56d1471a35
Binary file not shown.
@ -1519,6 +1519,20 @@ void scd_reset(int hard)
|
|||||||
m68k.memory_map[scd.cartridge.boot + 0x02].base = scd.prg_ram;
|
m68k.memory_map[scd.cartridge.boot + 0x02].base = scd.prg_ram;
|
||||||
m68k.memory_map[scd.cartridge.boot + 0x03].base = scd.prg_ram + 0x10000;
|
m68k.memory_map[scd.cartridge.boot + 0x03].base = scd.prg_ram + 0x10000;
|
||||||
|
|
||||||
|
/* allow access to PRG-RAM from MAIN-CPU */
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x02].read8 = NULL;
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x03].read8 = NULL;
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x02].read16 = NULL;
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x03].read16 = NULL;
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x02].write8 = NULL;
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x03].write8 = NULL;
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x02].write16 = NULL;
|
||||||
|
m68k.memory_map[scd.cartridge.boot + 0x03].write16 = NULL;
|
||||||
|
zbank_memory_map[scd.cartridge.boot + 0x02].read = NULL;
|
||||||
|
zbank_memory_map[scd.cartridge.boot + 0x03].read = NULL;
|
||||||
|
zbank_memory_map[scd.cartridge.boot + 0x02].write = NULL;
|
||||||
|
zbank_memory_map[scd.cartridge.boot + 0x03].write = NULL;
|
||||||
|
|
||||||
/* reset & halt SUB-CPU */
|
/* reset & halt SUB-CPU */
|
||||||
s68k.cycles = 0;
|
s68k.cycles = 0;
|
||||||
s68k_pulse_reset();
|
s68k_pulse_reset();
|
||||||
|
@ -735,19 +735,21 @@ int load_rom(char *filename)
|
|||||||
/* try to load CD BOOTROM */
|
/* try to load CD BOOTROM */
|
||||||
if (load_bios())
|
if (load_bios())
|
||||||
{
|
{
|
||||||
char *ptr;
|
|
||||||
char fname[256];
|
char fname[256];
|
||||||
|
int len = strlen(filename);
|
||||||
|
|
||||||
/* boot from cartridge */
|
/* boot from cartridge */
|
||||||
scd.cartridge.boot = 0x40;
|
scd.cartridge.boot = 0x40;
|
||||||
|
|
||||||
/* automatically load associated .iso image */
|
/* change ROM filename extension to .iso */
|
||||||
strncpy(fname, filename, 256);
|
while (len && (filename[len-1] != '.')) len--;
|
||||||
ptr = strchr(fname,'.');
|
if (len < 253)
|
||||||
if (ptr && (ptr < &fname[252]))
|
|
||||||
{
|
{
|
||||||
strcpy(ptr+1,"iso");
|
strncpy(fname, filename, len);
|
||||||
|
strcpy(&fname[len], "iso");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* automatically load associated .iso image */
|
||||||
cdd_load(fname, (char *)cdc.ram);
|
cdd_load(fname, (char *)cdc.ram);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -331,7 +331,7 @@ void z80_gg_port_w(unsigned int port, unsigned char data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* full address range is decoded by Game Gear I/O chip (fixes G-Loc) */
|
/* full address range is decoded by Game Gear I/O chip (fixes G-LOC Air Battle) */
|
||||||
else if ((port == 0x3E) || (port == 0x3F))
|
else if ((port == 0x3E) || (port == 0x3F))
|
||||||
{
|
{
|
||||||
io_z80_write(port & 1, data, Z80.cycles + SMS_CYCLE_OFFSET);
|
io_z80_write(port & 1, data, Z80.cycles + SMS_CYCLE_OFFSET);
|
||||||
|
@ -283,13 +283,6 @@ void osd_input_update(void)
|
|||||||
input.analog[i][0] = ((input_state_cb(player, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_X) + 0x7fff) * bitmap.viewport.w) / 0xfffe;
|
input.analog[i][0] = ((input_state_cb(player, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_X) + 0x7fff) * bitmap.viewport.w) / 0xfffe;
|
||||||
input.analog[i][1] = ((input_state_cb(player, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_Y) + 0x7fff) * bitmap.viewport.h) / 0xfffe;
|
input.analog[i][1] = ((input_state_cb(player, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_Y) + 0x7fff) * bitmap.viewport.h) / 0xfffe;
|
||||||
|
|
||||||
if (config.gun_cursor)
|
|
||||||
{
|
|
||||||
uint16_t *ptr = (uint16_t *)bitmap.data + ((bitmap.viewport.y + input.analog[i][1]) * bitmap.width) + input.analog[i][0] + bitmap.viewport.x;
|
|
||||||
ptr[-3*bitmap.width] = ptr[-bitmap.width] = ptr[bitmap.width] = ptr[3*bitmap.width] = ptr[-3] = ptr[-1] = ptr[1] = ptr[3] = (i & 1) ? 0xf800 : 0x001f;
|
|
||||||
ptr[-2*bitmap.width] = ptr[0] = ptr[2*bitmap.width] = ptr[-2] = ptr[2] = 0xffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_TRIGGER))
|
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_TRIGGER))
|
||||||
temp |= INPUT_A;
|
temp |= INPUT_A;
|
||||||
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_TURBO))
|
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_TURBO))
|
||||||
@ -432,6 +425,13 @@ void osd_input_update(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void draw_cursor(int16_t x, int16_t y, uint16_t color)
|
||||||
|
{
|
||||||
|
uint16_t *ptr = (uint16_t *)bitmap.data + ((bitmap.viewport.y + y) * bitmap.width) + x + bitmap.viewport.x;
|
||||||
|
ptr[-3*bitmap.width] = ptr[-bitmap.width] = ptr[bitmap.width] = ptr[3*bitmap.width] = ptr[-3] = ptr[-1] = ptr[1] = ptr[3] = color;
|
||||||
|
ptr[-2*bitmap.width] = ptr[2*bitmap.width] = ptr[-2] = ptr[2] = ptr[0] = 0xffff;
|
||||||
|
}
|
||||||
|
|
||||||
static void init_bitmap(void)
|
static void init_bitmap(void)
|
||||||
{
|
{
|
||||||
memset(&bitmap, 0, sizeof(bitmap));
|
memset(&bitmap, 0, sizeof(bitmap));
|
||||||
@ -1880,6 +1880,27 @@ void retro_run(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.gun_cursor)
|
||||||
|
{
|
||||||
|
if (input.system[0] == SYSTEM_LIGHTPHASER)
|
||||||
|
{
|
||||||
|
draw_cursor(input.analog[0][0], input.analog[0][1], 0x001f);
|
||||||
|
}
|
||||||
|
else if (input.dev[4] == DEVICE_LIGHTGUN)
|
||||||
|
{
|
||||||
|
draw_cursor(input.analog[4][0], input.analog[4][1], 0x001f);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.system[1] == SYSTEM_LIGHTPHASER)
|
||||||
|
{
|
||||||
|
draw_cursor(input.analog[4][0], input.analog[4][1], 0xf800);
|
||||||
|
}
|
||||||
|
else if (input.dev[5] == DEVICE_LIGHTGUN)
|
||||||
|
{
|
||||||
|
draw_cursor(input.analog[5][0], input.analog[5][1], 0xf800);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
video_cb(bitmap.data, vwidth, vheight, 720 * 2);
|
video_cb(bitmap.data, vwidth, vheight, 720 * 2);
|
||||||
audio_cb(soundbuffer, audio_update(soundbuffer));
|
audio_cb(soundbuffer, audio_update(soundbuffer));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user