Decrypted Skill Fruit Bonus program rom [Olivier Galibert]

This commit is contained in:
Angelo Salese 2009-02-12 18:43:50 +00:00
parent 72e326deb7
commit 268d66a97c
2 changed files with 99 additions and 8 deletions

View File

@ -4,12 +4,52 @@
*/
#include "driver.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "sound/okim6295.h"
static ADDRESS_MAP_START( sfbonus_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
static WRITE8_HANDLER( paletteram_io_w )
{
static int pal_offs,r,g,b,internal_pal_offs;
switch(offset)
{
case 0:
pal_offs = data;
break;
case 2:
internal_pal_offs = 0;
break;
case 1:
switch(internal_pal_offs)
{
case 0:
r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
internal_pal_offs++;
break;
case 1:
g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
internal_pal_offs++;
break;
case 2:
b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
palette_set_color(space->machine, pal_offs, MAKE_RGB(r, g, b));
internal_pal_offs = 0;
pal_offs++;
break;
}
break;
}
}
static ADDRESS_MAP_START( sfbonus_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xefff) AM_ROM //writes to 0-7fff?
AM_RANGE(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( sfbonus_io, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x0c00, 0x0c03) AM_WRITE( paletteram_io_w )
ADDRESS_MAP_END
VIDEO_START(sfbonus)
@ -45,8 +85,10 @@ GFXDECODE_END
static MACHINE_DRIVER_START( sfbonus )
MDRV_CPU_ADD("main", M68000, 16000000) // unknown CPU
MDRV_CPU_ADD("main", Z80, 16000000) // unknown CPU
MDRV_CPU_PROGRAM_MAP(0,sfbonus_map)
MDRV_CPU_IO_MAP(0,sfbonus_io)
MDRV_CPU_VBLANK_INT("main",irq0_line_hold)
MDRV_GFXDECODE(sfbonus)
@ -71,8 +113,7 @@ MACHINE_DRIVER_END
ROM_START( sfbonus )
ROM_REGION( 0x80000, "main", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "skfb16.bin", 0x00001, 0x40000, CRC(bfd53646) SHA1(bd58f8c6d5386649a6fc0f4bac46d1b6cd6248b1) )
ROM_LOAD16_BYTE( "skfb17.bin", 0x00000, 0x40000, CRC(e28ede82) SHA1(f320c4c9c30ec280ee2437d1ad4d2b6270580916) )
ROM_LOAD( "skfb16.bin", 0x00000, 0x40000, CRC(bfd53646) SHA1(bd58f8c6d5386649a6fc0f4bac46d1b6cd6248b1) )
ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
ROM_LOAD( "skfbrom2.bin", 0x00000, 0x20000, CRC(3823a36e) SHA1(4136e380b63546b9490033ad26d776f326eb9290) )
@ -92,4 +133,53 @@ ROM_START( sfbonus )
ROM_LOAD16_BYTE( "skfbrom6a.bin", 0x00001, 0x80000, CRC(b9a39e5a) SHA1(cb875db25d8bccf48542bd6dbecc474b1205563b) )
ROM_END
GAME( 199?, sfbonus, 0, sfbonus, sfbonus, 0, ROT0, "Amcoe", "Skill Fruit Bonus", GAME_NOT_WORKING|GAME_NO_SOUND )
ROM_START( sfbonusa )
ROM_REGION( 0x80000, "main", 0 ) /* 68000 Code */
ROM_LOAD( "skfb17.bin", 0x00000, 0x40000, CRC(e28ede82) SHA1(f320c4c9c30ec280ee2437d1ad4d2b6270580916) )
ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
ROM_LOAD( "skfbrom2.bin", 0x00000, 0x20000, CRC(3823a36e) SHA1(4136e380b63546b9490033ad26d776f326eb9290) )
ROM_REGION( 0x100000, "gfx1", 0 )
ROM_LOAD16_BYTE( "skfbrom3.bin", 0x00000, 0x80000, CRC(36119517) SHA1(241bb256ab3ba595dcb0c81fd2e60ed35dd7c197) )
ROM_LOAD16_BYTE( "skfbrom4.bin", 0x00001, 0x80000, CRC(a655bac1) SHA1(0faea01c09409f9182f08370dcc0b466a799f17f) )
ROM_REGION( 0x100000, "gfx2", 0 )
ROM_LOAD16_BYTE( "skfbrom5.bin", 0x00000, 0x80000, CRC(752e6e3b) SHA1(46c3a1bbbf1a2afe36fa5333b6e74459e17e9bae) )
ROM_LOAD16_BYTE( "skfbrom6.bin", 0x00001, 0x80000, CRC(30df6b6a) SHA1(7a180fa8ee64b9efb0321baffad72f0a9485d568) )
ROM_REGION( 0x100000, "gfx3", 0 )
// these are the same as gfx 2 up to a point, after which they change
// maybe different tiles for odd / even tilemap columns, like cps1.c
ROM_LOAD16_BYTE( "skfbrom5a.bin", 0x00000, 0x80000, CRC(ed07a635) SHA1(a31ee06d8cb78c43affa9d899e9cec87a0875934) )
ROM_LOAD16_BYTE( "skfbrom6a.bin", 0x00001, 0x80000, CRC(b9a39e5a) SHA1(cb875db25d8bccf48542bd6dbecc474b1205563b) )
ROM_END
static DRIVER_INIT( sfbonus )
{
int i;
UINT8 *ROM = memory_region(machine, "main");
for(i=0;i<0x40000;i++)
{
UINT8 x = ROM[i];
switch(i & 7)
{
case 0: x = BITSWAP8(x^0x2a, 1,3,7,6,5,2,0,4); break;
case 1: x = BITSWAP8(x^0xe4, 3,7,6,5,2,0,4,1); break;
case 2: x = BITSWAP8(x^0x2d, 4,1,3,7,6,5,2,0); break;
case 3: x = BITSWAP8(x^0xba, 4,3,0,2,1,7,6,5); break;
case 4: x = BITSWAP8(x^0x30, 2,1,7,6,5,0,3,4); break;
case 5: x = BITSWAP8(x^0xf1, 2,7,6,5,1,3,4,0); break;
case 6: x = BITSWAP8(x^0x3d, 2,1,4,7,6,5,3,0); break;
case 7: x = BITSWAP8(x^0xba, 4,3,0,1,2,7,6,5); break;
}
ROM[i] = x;
}
}
GAME( 199?, sfbonus, 0, sfbonus, sfbonus, sfbonus, ROT0, "Amcoe", "Skill Fruit Bonus", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 199?, sfbonusa, sfbonus, sfbonus, sfbonus, sfbonus, ROT0, "Amcoe", "Skill Fruit Bonus", GAME_NOT_WORKING|GAME_NO_SOUND )

View File

@ -8600,7 +8600,7 @@ Other Sun games
DRIVER( nc96txt ) /* (c) 2000 Amcoe */
DRIVER( nfb96 ) /* (c) 1996 Amcoe */
DRIVER( nfb96a ) /* (c) 1996 Amcoe */
DRIVER( nfb96b ) /* (c) 1996 Amcoe */
DRIVER( nfb96b ) /* (c) 1996 Amcoe */
DRIVER( nfb96c ) /* (c) 1996 Amcoe */
DRIVER( nfb96txt ) /* (c) 2000 Amcoe */
DRIVER( nfb96se ) /* bootleg */
@ -8610,6 +8610,7 @@ Other Sun games
DRIVER( carb2003 ) /* bootleg */
DRIVER( sfbonus ) /* (c) 199? Amcoe */
DRIVER( sfbonusa ) /* (c) 199? Amcoe */
DRIVER( ladylinr ) /* (c) 198? TAB Austria */
DRIVER( kkojnoli ) /* 198? south korean hack */
DRIVER( mtonic ) /* 198? (c) Tonic */