Jump to content

Welcome to 1Emulation.com
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account
Photo

driver for snowbro3

- - - - -

  • Please log in to reply
9 replies to this topic

#1
rcgamer

rcgamer

    Beginner

  • Members
  • 11 posts
Click to view battle stats
If anyone has working driver for snowbrothers 3 could you post it please. the one i have isnt working right.

Edited by rcgamer, 04 February 2004 - 05:12 AM.


#2
rcgamer

rcgamer

    Beginner

  • Members
  • 11 posts
Click to view battle stats
Nevermind I figured it out for myself. For those who need it, here ya go




put this in the video update section.

VIDEO_UPDATE( snowbro3 );
-------------------------------------
put this in the static machine driver

start/end section after 4in1

static MACHINE_DRIVER_START( snowbro3

)
/* basic machine hardware */
MDRV_CPU_ADD_TAG("main", M

68000, 16000000) /* 16mhz or 12mhz ?

*/
MDRV_CPU_PROGRAM_MAP(readmem

3,writemem3)
MDRV_CPU_VBLANK_INT(

snowbros_interrupt,3)

MDRV_FRAMES_PER_SECOND(60)
MDRV_VBLANK_DURATION(

DEFAULT_60HZ_VBLANK_DURATION)

/* video hardware */
MDRV_VIDEO_ATTRIBUTES(

VIDEO_TYPE_RASTER)
MDRV_SCREEN_SIZE(32*8, 32*:blink:
MDRV_VISIBLE_AREA(0*8, 32*8-

1, 2*8, 30*8-1)
MDRV_GFXDECODE(sb3

_gfxdecodeinfo)
MDRV_PALETTE_LENGTH(512)

MDRV_VIDEO_UPDATE(snowbro3)

/* sound hardware */
/* oki for sound */
MACHINE_DRIVER_END
------------------------------------
put this in the rom start, rom end

section under /* semicom games */

ROM_START( snowbro3 )
ROM_REGION( 0x40000,

REGION_CPU1, 0 ) /* 68000 code

*/
ROM_LOAD16_BYTE( "ur4", 0x

00000, 0x20000, CRC(19c13ffd) SHA1(4

f9db70354bd410b7bcafa96be4591de8dc33

d90) )
ROM_LOAD16_BYTE( "ur3", 0x

00001, 0x20000, CRC(3f32fa15) SHA1(

1402c173c1df142ff9dd7b859689c075813a

50e5) )

/* is sound cpu code missing

or is it driven by the main cpu? */

ROM_REGION( 0x80000,

REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "ua5",

0x000000, 0x80000, CRC(0604e385) SHA

1(96acbc65a8db89a7be100f852dc07ba9a

0313167) ) /* 16x16 tiles */

ROM_REGION( 0x400000,

REGION_GFX2, ROMREGION_DISPOSE ) /*

16x16 BG Tiles */
ROM_LOAD( "un7",

0x000000, 0x200000, CRC(4a79da4c)

SHA1(59207d116d39b9ee25c51affe520f5

fdff34e536) )
ROM_LOAD( "un8",

0x200000, 0x200000, CRC(7a4561a4)

SHA1(1dd823369c09368d1f0ec8e1cb85d

700f10ff448) )

ROM_REGION( 0x080000,

REGION_SOUND1, 0 ) /* OKIM6295

samples */
ROM_LOAD( "us5", 0x00000,

0x80000, CRC(7c6368ef) SHA1(53393c

570c605f7582b61c630980041e2ed32e2d) )
ROM_END
------------------------------------
put this at the end of the driver

init section of snowbro.c driver.

static DRIVER_INIT(snowbro3)
{
unsigned char *buffer;
data8_t *src = memory_region

(REGION_CPU1);
int len =

memory_region_length(REGION_CPU1);

/* strange order */
if ((buffer = malloc(len)))
{
int i;
for (i = 0;i < len;

i++)
buffer[i] =

src[BITSWAP24(i,23,22,21,20,19,18,17

,16,15,14,13,12,11,10,9,8,7,6,5,3,4,

1,2,0)];
memcpy(

src,buffer,len);
free(buffer);
}
}
-------------------------------------
put this under /* semicom games */

GAMEX(2002, snowbro3, 0,

snowbro3, snowbroj, snowbro3, ROT0,

"Syrmex / hack?", "Snow Brothers 3 -

Magical Adventure", GAME_NO_SOUND )

// its basically snowbros code?...

------------------------------------
put this at the end of src/vidhrdw/

snowbro.c

VIDEO_UPDATE( snowbro3 )
{
int sx=0, sy=0, x=0, y=0,

offs;


/*
* Sprite Tile Format
* ------------------
*
* Byte | Bit(s) | Use
* -----+-76543210-+--------

--------
* 0-5 | -------- |

?
* 6 | -------- |

?
* 7 | xxxx.... |

Palette Bank
* 7 |.......x |

XPos - Sign Bit
* 9 | xxxxxxxx |

XPos
* 7 |......x. |

YPos - Sign Bit
* B | xxxxxxxx |

YPos
* 7 |.....x.. |

Use Relative offsets
* C | -------- |

?
* D | xxxxxxxx |

Sprite Number (low 8 bits)
* E | -------- |

?
* F |....xxxx |

Sprite Number (high 4 bits)
* F | x....... |

Flip Sprite Y-Axis
* F |.x...... |

Flip Sprite X-Axis
*/

/* This clears & redraws the

entire screen each pass */

fillbitmap(

bitmap,get_black_pen(),&Machine-

>visible_area);

for (offs = 0;offs <

spriteram_size/2;offs += :D
{
struct GfxElement *

gfx = Machine->gfx[0];
int dx = spriteram16

[offs+4] & 0xff;
int dy = spriteram16

[offs+5] & 0xff;
int tilecolour =

spriteram16[offs+3];
int attr = spriteram

16[offs+7];
int flipx = attr &

0x80;
int flipy = (attr &

0x40) << 1;
int tile = ((attr &

0xff) << ;) + (spriteram16[offs+6] &

0xff);

if (tilecolour & 1)

dx = -1 - (dx ^ 0xff);
if (tilecolour & 2)

dy = -1 - (dy ^ 0xff);
if (tilecolour & 4)
{
x += dx;
y += dy;
}
else
{
x = dx;
y = dy;
}

if (x > 511) x &= 0x

1ff;
if (y > 511) y &= 0x

1ff;

if (flip_screen)
{
sx = 240 - x;
sy = 240 - y;
flipx = !

flipx;
flipy = !

flipy;
}
else
{
sx = x;
sy = y;
}

if (offs < 0x800) /*

i guess this is the right way */
{
gfx =

Machine->gfx[1];
tilecolour =

0x10;
}

drawgfx(bitmap,gfx,
tile,
(

tilecolour & 0xf0) >> 4,


flipx, flipy,


sx,sy,


&Machine-

>visible_area,TRANSPARENCY_PEN,0);
}
}
-------------------------------------
add this to src/driver.c under /*

semicom games */

DRIVER( snowbro3 ) /* © 2002

Syrmex (hack) */

#3
Fernando_S

Fernando_S

    Newbie Poster

  • Members
  • 7 posts
Click to view battle stats
This Driver is incomplete. I`ll post one of my own that really works soon.

#4
James

James

    Emulation Master

  • 1Emu Veteran
  • 2,884 posts
  • Gender:Male
  • Location:Newcastle Australia
Click to view battle stats

<------------------------
In SRC/DRIVERS/snowbros.c
<------------------------

VIDEO_UPDATE( snowbro3 );


-------------------------


static MACHINE_DRIVER_START( snowbro3 )

/* basic machine hardware */
MDRV_CPU_ADD(M68000, 16000000) /* 16mhz or 12mhz ? */
MDRV_CPU_MEMORY(readmem3,writemem3)
MDRV_CPU_VBLANK_INT(snowbros_interrupt,3)

MDRV_FRAMES_PER_SECOND(60)
MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)

/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
MDRV_SCREEN_SIZE(32*8, 32*;)
MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(sb3_gfxdecodeinfo)
MDRV_PALETTE_LENGTH(512)

MDRV_VIDEO_UPDATE(snowbro3)

/* sound hardware */
/* oki for sound */
MACHINE_DRIVER_END


-----------------------------


ROM_START( snowbro3 )
ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "ur4",  0x00000, 0x20000, CRC(19c13ffd) SHA1(4f9db70354bd410b7bcafa96be4591de8dc33d90) )
ROM_LOAD16_BYTE( "ur3",  0x00001, 0x20000, CRC(3f32fa15) SHA1(1402c173c1df142ff9dd7b859689c075813a50e5) )

/* is sound cpu code missing or is it driven by the main cpu? */

ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "ua5",  0x000000, 0x80000, CRC(0604e385) SHA1(96acbc65a8db89a7be100f852dc07ba9a0313167) ) /* 16x16 tiles */

ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* 16x16 BG Tiles */
ROM_LOAD( "un7",  0x000000, 0x200000, CRC(4a79da4c) SHA1(59207d116d39b9ee25c51affe520f5fdff34e536) )
ROM_LOAD( "un8",  0x200000, 0x200000, CRC(7a4561a4) SHA1(1dd823369c09368d1f0ec8e1cb85d700f10ff448) )

ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* OKIM6295 samples */
ROM_LOAD( "us5",  0x00000, 0x80000, CRC(7c6368ef) SHA1(53393c570c605f7582b61c630980041e2ed32e2d) )
ROM_END


-------------------------------

static DRIVER_INIT(snowbro3)
{
unsigned char *buffer;
data8_t *src = memory_region(REGION_CPU1);
int len = memory_region_length(REGION_CPU1);

/* strange order */
if ((buffer = malloc(len)))
{
  int i;
  for (i = 0;i < len; i++)
buffer[i] = src[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,3,4,1,2,0)];
  memcpy(src,buffer,len);
  free(buffer);
}
}


--------------------------------

GAMEX(2002, snowbro3, 0,        snowbro3, snowbroj, snowbro3, ROT0, "Syrmex / hack?", "Snow Brothers 3 - Magical Adventure", GAME_NO_SOUND ) // its basically snowbros code?...
/* the following don't work, they either point the interrupts at an area of ram probably shared by
some kind of mcu which puts 68k code there, or jump to the area in the interrupts */

--------------------------------

<--------------
In SRC/Driver.c
<--------------

Under DRIVER( wintbob )  /* bootleg */ ADD


DRIVER( snowbro3 ) /* 2002 Syrmex (hack) */


Edited by james, 06 March 2004 - 03:18 PM.


#5
Fernando_S

Fernando_S

    Newbie Poster

  • Members
  • 7 posts
Click to view battle stats
This is the missing part (mame32 0.79)
/*This Goes in Snowbros.c after the semicom memory map*/


static ADDRESS_MAP_START( readmem3, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ (MRA16_ROM)
AM_RANGE(0x100000, 0x103fff) AM_READ (MRA16_RAM)
// AM_RANGE(0x300000, 0x300001) AM_READ (OKIM6295_status_0_msb_r) // ?
AM_RANGE(0x500000, 0x500001) AM_READ (input_port_0_word_r)
AM_RANGE(0x500002, 0x500003) AM_READ (input_port_1_word_r)
AM_RANGE(0x500004, 0x500005) AM_READ (input_port_2_word_r)
AM_RANGE(0x600000, 0x6003ff) AM_READ (MRA16_RAM)
AM_RANGE(0x700000, 0x7021ff) AM_READ (MRA16_RAM)
ADDRESS_MAP_END

static ADDRESS_MAP_START( writemem3, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_WRITE (MWA16_ROM)
AM_RANGE(0x100000, 0x103fff) AM_WRITE (MWA16_RAM)
AM_RANGE(0x200000, 0x200001) AM_WRITE (watchdog_reset16_w)
// AM_RANGE(0x300000, 0x300001) AM_WRITE (OKIM6295_data_0_msb_w) // ?
AM_RANGE(0x400000, 0x400001) AM_WRITE (snowbros_flipscreen_w)
AM_RANGE(0x600000, 0x6003ff) AM_WRITE (paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x700000, 0x7021ff) AM_WRITE (MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
AM_RANGE(0x800000, 0x800001) AM_WRITE (MWA16_NOP) /* IRQ 4 acknowledge? */
AM_RANGE(0x900000, 0x900001) AM_WRITE (MWA16_NOP) /* IRQ 3 acknowledge? */
AM_RANGE(0xa00000, 0xa00001) AM_WRITE (MWA16_NOP) /* IRQ 2 acknowledge? */
ADDRESS_MAP_END


/********************************************************************************
*****************************/
/*This goes after:

/* handler called by the 3812/2151 emulator when the internal timers cause an IRQ */
static void irqhandler(int irq)
{
cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
}


*/

/* snow bros 3 */

static struct GfxLayout sb3_tilebglayout =
{
16,16,
RGN_FRAC(1,1),
8,
{8, 9,10, 11, 0, 1, 2, 3 },
{ 0, 4, 16, 20, 32, 36, 48, 52,
512+0,512+4,512+16,512+20,512+32,512+36,512+48,512+52},
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
1024+0*16,1024+1*64,1024+2*64,1024+3*64,1024+4*64,1024+5*64,1024+6*64,1024+7*64}
,
32*64
};


static struct GfxDecodeInfo sb3_gfxdecodeinfo[] =
{
{ REGION_GFX1, 0, &tilelayout, 0, 16 },
{ REGION_GFX2, 0, &sb3_tilebglayout, 0, 2 },
{ -1 } /* end of array */
};


/*The rest of the driver is ok, but note that where that you have to put " ;)" (just the eight and the bracket) where that emoticon appears*/

#6
Fernando_S

Fernando_S

    Newbie Poster

  • Members
  • 7 posts
Click to view battle stats
flock, that smily again.... that means and eight and a closing bracket...

#7
kispista

kispista

    Beginner

  • Members
  • 12 posts
Click to view battle stats
Will the snowbro3 have sound. If I remember well in mamev0.72 it hadn't.

#8
Fernando_S

Fernando_S

    Newbie Poster

  • Members
  • 7 posts
Click to view battle stats
Nope

#9
whatboy

whatboy

    Newbie Poster

  • Members
  • 6 posts
Click to view battle stats
GAMEX don't work correclty or not at all..

#10
James

James

    Emulation Master

  • 1Emu Veteran
  • 2,884 posts
  • Gender:Male
  • Location:Newcastle Australia
Click to view battle stats

GAMEX don't work correclty or not at all..

please explain snowbro3 works just has no sound.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users