diff --git a/src/burn/drv/sms/d_sms.cpp b/src/burn/drv/sms/d_sms.cpp index 508ab1a17..64388cd5f 100644 --- a/src/burn/drv/sms/d_sms.cpp +++ b/src/burn/drv/sms/d_sms.cpp @@ -145,6 +145,8 @@ INT32 SMSFrame() if(SMSJoy1[1]) input.system |= (IS_GG) ? INPUT_START : INPUT_PAUSE; } + BurnTransferClear(); + ZetOpen(0); system_frame(0); ZetClose(); @@ -174,6 +176,18 @@ static rominfo_t game_list[] = { {0xA577CE46, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, "Micro Machines"}, {0x8813514B, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, "Excellent Dizzy (Proto)"}, {0xAA140C9C, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, "Excellent Dizzy (Proto - GG)"}, + {0x76c5bdfb, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Jang Pung 2 (KR)"}, + {0x18fb98a3, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Jang Pung 3 (KR)"}, + // GameGear + {0x6CAA625B, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Cosmic Spacehead [GG]"}, + {0x152F0DCC, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Drop Zone"}, + {0x5E53C7F7, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Ernie Els Golf"}, + {0xD9A7F170, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Man Overboard!"}, + {0xF7C524F6, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Micro Machines [GG]"}, + {0xDBE8895C, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Micro Machines 2 - Turbo Tournament"}, + {0xC1756BEE, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "Pete Sampras Tennis"}, + {0x72981057, MAPPER_CODIES, DISPLAY_NTSC,TERRITORY_EXPORT, "CJ Elephant Fugitive"}, + {0x72420f38, MAPPER_SEGA, DISPLAY_PAL, TERRITORY_EXPORT, "Addams Family"}, {0x887d9f6b, MAPPER_SEGA, DISPLAY_PAL, TERRITORY_EXPORT, "XXAce of Aces"}, {0x3793c01a, MAPPER_SEGA, DISPLAY_PAL, TERRITORY_EXPORT, "XXShadow Dancer (KR)"}, @@ -225,7 +239,6 @@ static rominfo_t game_list[] = { {0xf06f2ccb, MAPPER_MSX, DISPLAY_NTSC, TERRITORY_EXPORT, "Eagles 5(KR)"}, {0xdd74bcf1, MAPPER_MSX, DISPLAY_NTSC, TERRITORY_EXPORT, "Exa Innova E.I. (KR)"}, {0x17ab6883, MAPPER_MSX, DISPLAY_NTSC, TERRITORY_EXPORT, "FA Tetris (KR)"}, - {0x18fb98a3, MAPPER_MSX, DISPLAY_NTSC, TERRITORY_EXPORT, "Jang Pung 3 (KR)"}, //{, MAPPER_MSX, DISPLAY_NTSC, TERRITORY_EXPORT, " (KR)"}, {0 , -1 , -1, -1, NULL}, }; diff --git a/src/burn/drv/sms/smsrender.cpp b/src/burn/drv/sms/smsrender.cpp index 4dcc380be..c21eb3002 100644 --- a/src/burn/drv/sms/smsrender.cpp +++ b/src/burn/drv/sms/smsrender.cpp @@ -253,13 +253,14 @@ void render_line(int line) /* Update pattern cache */ update_bg_pattern_cache(); + memset(linebuf, 0, bitmap.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); + // do nothing } else if(!(vdp.reg[1] & 0x40)) - { + { memset(linebuf, BACKDROP_COLOR, bitmap.width); } else @@ -275,11 +276,17 @@ void render_line(int line) /* Blank leftmost column of display */ if(vdp.reg[0] & 0x20) { + if (IS_GG) + bitmap.viewport.x = 44; // fixes crap on the right side of the screen in Devilish, Yuyu & Codemasters games memset(linebuf, BACKDROP_COLOR, 8); // center the screen -dink - memmove(linebuf+4, linebuf+8, bitmap.width); - memset(linebuf+bitmap.width-4, BACKDROP_COLOR, 4); - } + memmove(linebuf+4, linebuf+8, bitmap.viewport.w + bitmap.viewport.x); + if (!IS_GG) + memset(linebuf+bitmap.viewport.w + bitmap.viewport.x - 4, BACKDROP_COLOR, 4); + } else { + if (IS_GG) + bitmap.viewport.x = 48; + } } if(bitmap.depth != 8) remap_8_to_16(line); @@ -604,9 +611,9 @@ void palette_sync(int index, int force) void remap_8_to_16(int line) { 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++) + + UINT16 *p = (uint16 *)&bitmap.data[(line * bitmap.pitch)]; + for (INT32 i = bitmap.viewport.x; i < bitmap.viewport.w + bitmap.viewport.x; i++) { p[i] = internal_buffer[i] & PIXEL_MASK; } diff --git a/src/burn/drv/sms/smsvdp.cpp b/src/burn/drv/sms/smsvdp.cpp index 102670612..a1a115044 100644 --- a/src/burn/drv/sms/smsvdp.cpp +++ b/src/burn/drv/sms/smsvdp.cpp @@ -52,7 +52,7 @@ void vdp_reset(void) vdp.extended = 0; vdp.height = 192; - bitmap.viewport.x = (IS_GG) ? 48 : 0; + bitmap.viewport.x = (IS_GG) ? 48 : 0; // 44 for (vdp.reg[0] & 0x20 && IS_GG) bitmap.viewport.y = (IS_GG) ? 24 : 0; bitmap.viewport.w = (IS_GG) ? 160 : 256; bitmap.viewport.h = (IS_GG) ? 144 : 192;