SMS: fix 2 small bugs, add gg aleste (1) game

This commit is contained in:
dinkc64 2015-03-02 07:06:53 +00:00
parent 70a4faf072
commit bc42ab57a9
6 changed files with 57 additions and 32 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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);

View File

@ -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++)

View File

@ -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];

View File

@ -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);
}