SMS: fix 2 small bugs, add gg aleste (1) game
This commit is contained in:
parent
70a4faf072
commit
bc42ab57a9
|
@ -20,7 +20,6 @@ UINT8 SMSDips[3];
|
|||
|
||||
static struct BurnDIPInfo SMSDIPList[] = {
|
||||
{0x3d, 0xff, 0xff, 0x00, NULL },
|
||||
|
||||
};
|
||||
|
||||
STDDIPINFO(SMS)
|
||||
|
@ -63,9 +62,13 @@ static INT32 MemIndex()
|
|||
return 0;
|
||||
}
|
||||
|
||||
INT32 SMSInit();
|
||||
|
||||
static INT32 DrvDoReset()
|
||||
{
|
||||
memset (AllRam, 0, RamEnd - AllRam);
|
||||
vdp_init(); // gets rid of crap on the screen w/GG
|
||||
render_init(); // ""
|
||||
sms_reset();
|
||||
|
||||
return 0;
|
||||
|
@ -288,10 +291,11 @@ static INT32 load_rom()
|
|||
}
|
||||
}
|
||||
|
||||
/* Figure out game image type */
|
||||
//if(stricmp(strrchr(game_name, '.'), ".gg") == 0) <- this causes crash -dink
|
||||
// sms.console = CONSOLE_GG;
|
||||
//else
|
||||
/* Figure out game image type */
|
||||
if (strstr(BurnDrvGetTextA(DRV_NAME), "sms_ggaleste")) {
|
||||
sms.console = CONSOLE_GG; // Temp. hack for GG Aleste, since GG games aren't "officially" supported yet.
|
||||
}
|
||||
else
|
||||
sms.console = CONSOLE_SMS;
|
||||
|
||||
system_assign_device(PORT_A, DEVICE_PAD2B);
|
||||
|
@ -737,6 +741,25 @@ struct BurnDriver BurnDrvsms_aleste2gg2sms = {
|
|||
256, 192, 4, 3
|
||||
};
|
||||
|
||||
// GG Aleste
|
||||
|
||||
static struct BurnRomInfo sms_alesteggRomDesc[] = {
|
||||
{ "gg aleste (japan).bin", 0x40000, 0x1b80a75b, BRF_PRG | BRF_ESS },
|
||||
};
|
||||
|
||||
STD_ROM_PICK(sms_alestegg)
|
||||
STD_ROM_FN(sms_alestegg)
|
||||
|
||||
struct BurnDriver BurnDrvsms_alestegg = {
|
||||
"sms_ggaleste", NULL, NULL, NULL, "1993",
|
||||
"Aleste GG\0", NULL, "Sega", "Sega Mastersystem",
|
||||
NULL, NULL, NULL, NULL,
|
||||
BDF_GAME_WORKING, 2, HARDWARE_SEGA_MASTER_SYSTEM, GBF_MISC, 0,
|
||||
SMSGetZipName, sms_alesteggRomInfo, sms_alesteggRomName, NULL, NULL, SMSInputInfo, SMSDIPInfo,
|
||||
SMSInit, SMSExit, SMSFrame, SMSDraw, SMSScan, &SMSPaletteRecalc, 0x1000,
|
||||
256, 192, 4, 3
|
||||
};
|
||||
|
||||
|
||||
// Alex Kidd BMX Trial (Jpn)
|
||||
|
||||
|
|
|
@ -89,9 +89,6 @@ void sms_init(void)
|
|||
case CONSOLE_SMS:
|
||||
ZetSetOutHandler(sms_port_w);
|
||||
ZetSetInHandler(sms_port_r);
|
||||
//bprintf(0, _T("sms!\n"));
|
||||
//smscpu_writeport16 = sms_port_w;
|
||||
//smscpu_readport16 = sms_port_r;
|
||||
break;
|
||||
|
||||
case CONSOLE_SMSJ:
|
||||
|
@ -106,8 +103,8 @@ void sms_init(void)
|
|||
break;
|
||||
|
||||
case CONSOLE_GG:
|
||||
//smscpu_writeport16 = gg_port_w;
|
||||
//smscpu_readport16 = gg_port_r;
|
||||
ZetSetOutHandler(gg_port_w);
|
||||
ZetSetInHandler(gg_port_r);
|
||||
data_bus_pullup = 0xFF;
|
||||
break;
|
||||
|
||||
|
@ -144,8 +141,8 @@ void sms_reset(void)
|
|||
ZetOpen(0);
|
||||
|
||||
/* Clear SMS context */
|
||||
memset(dummy_write, 0, sizeof(dummy_write));
|
||||
memset(sms.wram, 0, sizeof(sms.wram));
|
||||
memset(&dummy_write, 0, sizeof(dummy_write));
|
||||
memset(&sms.wram, 0, sizeof(sms.wram));
|
||||
memset(cart.sram, 0, sizeof(cart.sram));
|
||||
|
||||
sms.paused = 0x00;
|
||||
|
@ -432,7 +429,7 @@ UINT8 smsj_port_r(UINT16 port)
|
|||
/* Game Gear port handlers */
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
void gg_port_w(UINT16 port, UINT8 data)
|
||||
void _fastcall gg_port_w(UINT16 port, UINT8 data)
|
||||
{
|
||||
port &= 0xFF;
|
||||
|
||||
|
@ -464,7 +461,7 @@ void gg_port_w(UINT16 port, UINT8 data)
|
|||
}
|
||||
|
||||
|
||||
UINT8 gg_port_r(UINT16 port)
|
||||
UINT8 _fastcall gg_port_r(UINT16 port)
|
||||
{
|
||||
port &= 0xFF;
|
||||
|
||||
|
|
|
@ -109,8 +109,8 @@ void sms_mapper8k_w(INT32 address, UINT8 data);
|
|||
|
||||
/* port-map Function prototypes */
|
||||
uint8 z80_read_unmapped(void);
|
||||
void gg_port_w(uint16 port, uint8 data);
|
||||
uint8 gg_port_r(uint16 port);
|
||||
void _fastcall gg_port_w(UINT16 port, UINT8 data);
|
||||
UINT8 _fastcall gg_port_r(UINT16 port);
|
||||
void ggms_port_w(uint16 port, uint8 data);
|
||||
uint8 ggms_port_r(uint16 port);
|
||||
void _fastcall sms_port_w(UINT16 port, UINT8 data);
|
||||
|
|
|
@ -17,7 +17,7 @@ void (*render_obj)(int line) = NULL;
|
|||
uint8 *linebuf;
|
||||
|
||||
/* Internal buffer for drawing non 8-bit displays */
|
||||
uint8 internal_buffer[0x100];
|
||||
uint8 internal_buffer[0x200];
|
||||
|
||||
/* Precalculated pixel table */
|
||||
uint16 pixel[PALETTE_SIZE];
|
||||
|
@ -108,6 +108,8 @@ void render_init(void)
|
|||
int bx, sx, b, s, bp, bf, sf, c;
|
||||
|
||||
make_tms_tables();
|
||||
memset(&lut, 0, sizeof(lut));
|
||||
memset(&bp_lut, 0, sizeof(bp_lut));
|
||||
|
||||
/* Generate 64k of data for the look up table */
|
||||
for(bx = 0; bx < 0x100; bx++)
|
||||
|
@ -218,7 +220,7 @@ void render_reset(void)
|
|||
int i;
|
||||
|
||||
/* Clear display bitmap */
|
||||
memset(bitmap.data, 0, bitmap.pitch * bitmap.height);
|
||||
memset(bitmap.data, 0, bitmap.width * bitmap.height);
|
||||
|
||||
/* Clear palette */
|
||||
for(i = 0; i < PALETTE_SIZE; i++)
|
||||
|
@ -227,11 +229,11 @@ void render_reset(void)
|
|||
}
|
||||
|
||||
/* Invalidate pattern cache */
|
||||
memset(bg_name_dirty, 0, sizeof(bg_name_dirty));
|
||||
memset(bg_name_list, 0, sizeof(bg_name_list));
|
||||
memset(&bg_name_dirty, 0, sizeof(bg_name_dirty));
|
||||
memset(&bg_name_list, 0, sizeof(bg_name_list));
|
||||
bg_list_index = 0;
|
||||
memset(bg_pattern_cache, 0, sizeof(bg_pattern_cache));
|
||||
|
||||
memset(&bg_pattern_cache, 0, sizeof(bg_pattern_cache));
|
||||
memset(&internal_buffer, 0, sizeof(internal_buffer));
|
||||
/* Pick render routine */
|
||||
render_bg = render_bg_sms;
|
||||
render_obj = render_obj_sms;
|
||||
|
@ -251,7 +253,11 @@ void render_line(int line)
|
|||
/* Update pattern cache */
|
||||
update_bg_pattern_cache();
|
||||
|
||||
/* Blank line (full width) */
|
||||
/* Blank line (full width) */
|
||||
if((IS_GG) && line < 8) { // fix for crap at top of screen in GG -dink
|
||||
//char bg = (char)linebuf[0];
|
||||
memset(linebuf, 0, bitmap.width);
|
||||
} else
|
||||
if(!(vdp.reg[1] & 0x40))
|
||||
{
|
||||
memset(linebuf, BACKDROP_COLOR, bitmap.width);
|
||||
|
@ -263,8 +269,8 @@ void render_line(int line)
|
|||
render_bg(line);
|
||||
|
||||
/* Draw sprites */
|
||||
if(render_obj != NULL)
|
||||
render_obj(line);
|
||||
if(render_obj != NULL)
|
||||
render_obj(line);
|
||||
|
||||
/* Blank leftmost column of display */
|
||||
if(vdp.reg[0] & 0x20)
|
||||
|
@ -597,7 +603,7 @@ void palette_sync(int index, int force)
|
|||
|
||||
void remap_8_to_16(int line)
|
||||
{
|
||||
if (line > nScreenHeight) return;
|
||||
if (line > nScreenHeight) return;
|
||||
int i;
|
||||
uint16 *p = (uint16 *)&bitmap.data[(line * bitmap.pitch)];
|
||||
for(i = bitmap.viewport.x; i < bitmap.viewport.w + bitmap.viewport.x; i++)
|
||||
|
|
|
@ -13,7 +13,7 @@ extern uint8 gg_cram_expand_table[16];
|
|||
extern void (*render_bg)(int line);
|
||||
extern void (*render_obj)(int line);
|
||||
extern uint8 *linebuf;
|
||||
extern uint8 internal_buffer[0x100];
|
||||
extern uint8 internal_buffer[0x200];
|
||||
extern uint16 pixel[];
|
||||
extern uint8 bg_name_dirty[0x200];
|
||||
extern uint16 bg_name_list[0x200];
|
||||
|
|
|
@ -42,7 +42,6 @@ void sound_shutdown(void)
|
|||
return;
|
||||
|
||||
/* Shut down SN76489 emulation */
|
||||
//SN76489_Shutdown();
|
||||
SN76496Exit();
|
||||
|
||||
/* Shut down YM2413 emulation */
|
||||
|
@ -58,7 +57,7 @@ void sound_reset(void)
|
|||
return;
|
||||
|
||||
/* Reset SN76489 emulator */
|
||||
//SN76489_Reset(0);
|
||||
SN76496Reset();
|
||||
|
||||
/* Reset YM2413 emulator */
|
||||
FM_Reset();
|
||||
|
@ -73,8 +72,8 @@ void psg_stereo_w(int data)
|
|||
{
|
||||
if(!snd.enabled)
|
||||
return;
|
||||
//SN76489_GGStereoWrite(0, data);
|
||||
SN76496Write(0, data); // wrong - needs stereo -dink
|
||||
|
||||
SN76496StereoWrite(0, data);
|
||||
}
|
||||
|
||||
|
||||
|
@ -82,7 +81,7 @@ void psg_write(int data)
|
|||
{
|
||||
if(!snd.enabled)
|
||||
return;
|
||||
//SN76489_Write(0, data);
|
||||
|
||||
SN76496Write(0, data);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue