-
Posts
12,946 -
Joined
-
Last visited
-
Days Won
355
Content Type
Profiles
Events
Forums
Blogs
Downloads
Everything posted by Robert
-
Did a big clean/tidyup of neogeo.c, removed various un-needed codes, commented out code for games i'm not implementing... and finally found a fix for svcplus/svcplusa. I'd left out the px_hack routine. Now, every driver for which I have the roms is working! Decided to add kof10thu and kf10thep, only to discover I don't possess the encrypted kof10thu roms. Therefore I made a kf10thud and substituted the p1 and s1 roms from the nrx set. Two more working games! While watching kof10th attract mode, I discovered that the neogeo/snk screen is corrupted. Since my new kf10thud uses exactly the same c roms without problems, the fault must lie either in the p1-program, or in the driver. This needs to be investigated. This exercise has been a great learning experience, I have thoroughly enjoyed it. Thanks to James for his assistance!
-
Happy 17th birthday AxL !!!
-
Hoxs64 is a Commodore 64 emulator >> Get it HERE
-
Nhes is a Gameboy emulator currently under development. >> Visit the Homepage / Download here! Credit: Thanks to Emulation9 for the heads-up.
-
Why is it that the good die young?
-
>> Visit the Homepage.
-
>> Visit the Homepage. Credit: Thanks to Emulation9 for the heads-up.
-
Xe is a multi-system emulator that runs on Windows and Linux. >> Visit the Homepage.
-
Yep understood. Had another go at bankswitching code, kof2003 is working at last! Still no luck with svcplus and svcplusa.
-
Thank you again sir. You've saved me about 2 weeks of work, I would have got there eventually, I swear. (j/k) It runs pretty well, there's just that bad graphics in the title screen that you mentioned. I've tidied up that code and removed the redundant and duplicated stuff. It works the same - I tested it. //----------------------------------------------------------------------kog experimental code DRIVER_INIT( kog ) { UINT8 *rom = memory_region( REGION_CPU1 ); UINT8 *buf = malloc( 0x100000 ); int i; unsigned int nBank[] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD }; for (i = 0; i < 8; i++) { memcpy (buf + i * 0x20000, rom + nBank[i] * 0x20000, 0x20000); } memcpy( &rom[ 0x000000 ], &buf[ 0x000000 ], 0x100000); //move unscrambled p1 back memcpy( &rom[ 0x100000 ], &rom[ 0x200000 ], 0x400000); //move p2 rom to original location free(buf); samsh5bl_sx_decrypt(); //works samsh5bl_cx_decrypt(); //works init_neogeo(); }
-
Got a little further with kog. When it should show neogeo snk screen, it shows a crosshatch pattern instead, and stops. What does this mean?
-
Perhaps if someone can talk me through getting website watcher working again, then i'd be able to post some news. EDIT: nvm, I fixed it. Generally, I'm exhausted from work, and it's too damn hot and humid to do anything but sleep.
-
Yeah, that. Why is the set called 2k3 Ultra Plus, when it says 2k4 and no ultra. The EX isn't even mentioned.
-
I followed the instructions and it worked !! The title screen says King of Fighters 2004 EX @@ PLUS (the @ signs are really some asian characters)
-
Thankyou sir, I can see I was loading the c roms in the wrong order. Now, I've worked out the so-called "encryption" of the C roms - I found a suitable subroutine, and the graphics are now perfect. The p1 rom is the major obstacle as part of it appears to be encrypted. Booting up produces a red screen at the moment.
-
Today I've gotten svcboot to work, and I've added samsh5sp which is working as well. Spent the rest of the evening playing around with kog (King of Gladiator). Got the s rom worked out, but having trouble with the c roms - graphics are messed up.
-
I looked at that thread but I've obviously missed something... I'll take another look tomorrow. I found a driver for cthd2003, fixed the usual syntax errors, missing subroutines etc and it works well.
-
22 hours later and no response, oh well. I've gotten pnyaa, svcsplus and matrimbl working. Can someone please supply the machine\neogeo.c code (bankswitching etc) for svcboot, svcplus, svcplusa, svcchaos, svchaosa? Still no success with kof2003, can someone help me? (see previous post). Can someone post the driver for cthd2003? Thanks.
-
Link doesn't work.
-
Mame Plus If you right-click on a game, you can Enable Boss.
-
1. KOF96EVO - I had realised that the 2nd half of the p1 rom should not be loaded, and I'd got it working with a warning. Your solution is neater and I'll try it soon. 2. neopong - When the playfield appears, the whole computer freezes and has to be powered off/on. I copied exactly the mameplus code, it's quite straightforward, mystery. 3. samsho5 works. Kof2k2mp magic plus works. 4. svcchaos, svchaosa - i'm missing 269-m1d so bad luck for me 5. svcplus, svcplusa, svcsplus, svcboot - none of these work. I've just added your codes James (thanks very much!), and I'm about to compile now. *** EDIT EDIT EDIT *** 1. kof96evo works now without any warnings, yay! 2. Mslug5 works! 3. Pnyaa works! 4. KOF2003 - although the code all seems to be there it quite obviously doesn't work. ROM_START( kof2003 ) ROM_REGION( 0x900000, REGION_CPU1, 0 ) ROM_LOAD32_WORD_SWAP( "271-p1.bin", 0x000000, 0x400000, CRC(b9da070c) SHA1(1a26325af142a4dd221c336061761468598c4634) ) ROM_LOAD32_WORD_SWAP( "271-p2.bin", 0x000002, 0x400000, CRC(da3118c4) SHA1(582e4f44f03276adecb7b2848d3b96bf6da57f1e) ) ROM_LOAD16_WORD_SWAP( "271-p3.bin", 0x800000, 0x100000, CRC(5cefd0d2) SHA1(cddc3164629fed4b6f715e12b109ad35d1009355) ) ROM_LOAD16_WORD_SWAP( "271-p3d.bin", 0x800000, 0x100000, CRC(59d376da) SHA1(3c3ad0b79e8b37e838893a8f7b87e11d7eeee8f2) ) ROM_REGION( 0x100000, REGION_GFX1, 0 ) ROM_FILL( 0x000000, 0x100000, 0 ) ROM_REGION( 0x20000, REGION_GFX2, 0 ) ROM_LOAD( "sfix.sfx", 0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) ) ROM_REGION16_BE( 0x40000, REGION_USER1, 0 ) ROM_LOAD16_WORD_SWAP( "271-bios.bin", 0x00000, 0x040000, CRC(c521b5bc) SHA1(c9a5db63523191dedd1b39baab8772f64f09b77f) ) ROM_REGION( 0x90000, REGION_CPU2, 0 ) ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) ) ROM_LOAD( "271-m1d.bin", 0x00000, 0x80000, CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) ) ROM_RELOAD( 0x10000, 0x80000 ) ROM_REGION( 0x10000, REGION_GFX4, 0 ) ROM_LOAD( "000-lo.lo", 0x00000, 0x10000, CRC(e09e253c) SHA1(2b1c719531dac9bb503f22644e6e4236b91e7cfc) ) ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY ) ROM_LOAD( "271-v1d.bin", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) ) // ROM_LOAD( "271-v1.bin", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) ) NO_DELTAT_REGION ROM_REGION( 0x6000000, REGION_GFX3, 0 ) ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) ) ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) ) ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) ) ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) ) ROM_LOAD16_BYTE( "271-c5d.bin", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) ) ROM_LOAD16_BYTE( "271-c6d.bin", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) ) ROM_END //--------------------------------------------------------kof2003 static void kof2003_px_decrypt( void ) { const unsigned char xor2[ 0x20 ] = { 0xb4, 0x0f, 0x40, 0x6c, 0x38, 0x07, 0xd0, 0x3f, 0x53, 0x08, 0x80, 0xaa, 0xbe, 0x07, 0xc0, 0xfa, 0xd0, 0x08, 0x10, 0xd2, 0xf1, 0x03, 0x70, 0x7e, 0x87, 0x0B, 0x40, 0xf6, 0x2a, 0x0a, 0xe0, 0xf9 }; int i; int ofst; UINT8 *rom, *buf; rom = memory_region( REGION_CPU1 ); for( i = 0x100000; i < 0x800000; i++ ){ rom[ i ] ^= xor2[ (i % 0x20) ]; } for( i = 0x100000; i < 0x800000; i += 4 ){ UINT16 *rom16 = (UINT16*)&rom[ i + 1 ]; *rom16 = BITSWAP16( *rom16, 15, 14, 13, 12, 4, 5, 6, 7, 8, 9, 10, 11, 3, 2, 1, 0 ); } buf = malloc( 0x800000 ); memcpy( buf, rom, 0x800000 ); for( i = 0; i < 0x0100000 / 0x10000; i++ ){ ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 ); memcpy( &rom[ i * 0x10000 ], &buf[ ofst * 0x10000 ], 0x10000 ); } for( i = 0x100000; i < 0x800000; i += 0x100 ){ ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00300) + (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12); memcpy( &rom[ i ], &buf[ ofst ], 0x100 ); } free( buf ); buf = malloc(0x900000); memcpy( buf, rom, 0x900000 ); memcpy( &rom[0x100000], &buf[0x800000], 0x100000 ); memcpy( &rom[0x200000], &buf[0x100000], 0x700000 ); free(buf); } static void kof2003_sx_decrypt( void ) { int i; int tx_size = memory_region_length( REGION_GFX1 ); int rom_size = memory_region_length( REGION_GFX3 ); UINT8 *src; UINT8 *dst; src = memory_region( REGION_GFX3 ) + rom_size - 0x1000000 - 0x80000; dst = memory_region( REGION_GFX1 ); for( i = 0; i < tx_size / 2; i++ ){ dst[ i ] = src[ (i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) ]; } src = memory_region( REGION_GFX3 ) + rom_size - 0x80000; dst = memory_region( REGION_GFX1 ) + 0x80000; for( i = 0; i < tx_size / 2; i++ ){ dst[ i ] = src[ (i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) ]; } dst = memory_region( REGION_GFX1 ); for( i = 0; i < tx_size; i++ ){ dst[ i ] = BITSWAP8( dst[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 ); } } DRIVER_INIT( kof2003 ) { kof2003_px_decrypt(); kof2003_sx_decrypt(); // save_decrypted_ps(); neogeo_fix_bank_type = 2; init_neogeo(); } GAMEB( 2003, kof2003, neogeo, neogeo, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (PCB, decrypted C)", 0 ) machine\neogeo.c if (!strcmp(Machine->gamedrv->name,"kof2003")) { memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, MRA16_RAM ); memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, MWA16_RAM ); memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fffe0, 0x2fffef, 0, 0, mv0_prot_r ); memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fffe0, 0x2fffef, 0, 0, mv0_prot_w ); memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff3, 0, 0, mv0_bankswitch_r ); memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff3, 0, 0, mv0_bankswitch_w ); memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0xc00000, 0xc3ffff, 0, 0, MRA16_BANK3 ); // 256k bios } What do you think?
-
Actually, I had already done that but for some reason it didn't take. Now I get a black screen instead. Turned on the rom_load debug feature to assist me. I put all new code in for kof2003, still a black screen. Removed kof2003a, kof2003b, kof2k3up as I'm confused by the multitudes of different drivers and I don't have the roms anyway. Got kf2k4spe working after installing fet's driver. Diggerman and syscheck worked first go. Diggerman is a variation on boulderdash. Syscheck displays a couple of text messages (a waste of over 2 megs of roms). Now, the first thing to fix is mslug5. Here is my driver, what's wrong with it? ROM_START( mslug5 ) ROM_REGION( 0x800000, REGION_CPU1, 0 ) ROM_LOAD32_WORD_SWAP( "268-p1.bin", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) ) ROM_LOAD32_WORD_SWAP( "268-p2.bin", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) ) ROM_REGION( 0x20000, REGION_GFX1, 0 ) ROM_FILL( 0x000000, 0x20000, 0 ) ROM_REGION( 0x20000, REGION_GFX2, 0 ) ROM_LOAD( "sfix.sfx", 0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) ) ROM_REGION( 0x40000, REGION_USER4, 0 ) ROM_LOAD( "268-m1.bin", 0x00000, 0x40000, CRC(88c11f51) SHA1(5592819be64b69ab361d3b6b139fc68d8cabd29d) ) NEO_BIOS_SOUND_256K( "268-m1d.bin", CRC(6866d696) SHA1(3638b072e44277a6bffea5a78a915a14c6afcba0) ) ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY ) ROM_LOAD( "268-v1.bin", 0x000000, 0x800000, CRC(33c6305c) SHA1(67fce35a62941d2dcec75f0e6319677d6df7a4dc) ) ROM_LOAD( "268-v2.bin", 0x800000, 0x800000, CRC(1afb848e) SHA1(368e950043deebc91f7b38be770fa1045a0153af) ) NO_DELTAT_REGION ROM_REGION( 0x4000000, REGION_GFX3, 0 ) ROM_LOAD16_BYTE( "268-c1.bin", 0x0000000, 0x800000, CRC(27d59de8) SHA1(0447a675d885721cedc079788cf41ae3f797834b) ) ROM_LOAD16_BYTE( "268-c2.bin", 0x0000001, 0x800000, CRC(e600dee1) SHA1(e55e5a25616c4daf09692d1b53a92d6f31e842ac) ) ROM_LOAD16_BYTE( "268-c3.bin", 0x1000000, 0x800000, CRC(b650f098) SHA1(4cd729153bd5b2054fbe10c96d2bb370084d1d24) ) ROM_LOAD16_BYTE( "268-c4.bin", 0x1000001, 0x800000, CRC(10499589) SHA1(24542a3b70080e5a61fdab04ab314450a1d821ef) ) ROM_LOAD16_BYTE( "268-c5.bin", 0x2000000, 0x800000, CRC(19352405) SHA1(5ee255403739c11a65608dcff0984480f067d824) ) ROM_LOAD16_BYTE( "268-c6.bin", 0x2000001, 0x800000, CRC(b1531523) SHA1(786f342dbb7fea50139d6421e5b82e551772bf0a) ) ROM_LOAD16_BYTE( "268-c7.bin", 0x3000000, 0x800000, CRC(fe2c1338) SHA1(de9d257574881dd1684956f60011a20c1dd5a0d9) ) ROM_LOAD16_BYTE( "268-c8.bin", 0x3000001, 0x800000, CRC(ecce3141) SHA1(103247b57f8ea5746dd1cf92dda95a6dc9268c78) ) ROM_END //---------------------------------------------------------mslug5 static void mslug5_px_decrypt( void ) { const unsigned char xor1[ 0x20 ] = { 0xc2, 0x4b, 0x74, 0xfd, 0x0b, 0x34, 0xeb, 0xd7, 0x10, 0x6d, 0xf9, 0xce, 0x5d, 0xd5, 0x61, 0x29, 0xf5, 0xbe, 0x0d, 0x82, 0x72, 0x45, 0x0f, 0x24, 0xb3, 0x34, 0x1b, 0x99, 0xea, 0x09, 0xf3, 0x03, }; const unsigned char xor2[ 0x20 ] = { 0x36, 0x09, 0xb0, 0x64, 0x95, 0x0f, 0x90, 0x42, 0x6e, 0x0f, 0x30, 0xf6, 0xe5, 0x08, 0x30, 0x64, 0x08, 0x04, 0x00, 0x2f, 0x72, 0x09, 0xa0, 0x13, 0xc9, 0x0b, 0xa0, 0x3e, 0xc2, 0x00, 0x40, 0x2b, }; int i; UINT8 *rom, *buf; int ofst; rom = memory_region( REGION_CPU1 ); for( i = 0; i < 0x100000; i++ ){ rom[ i ] ^= xor1[ (i % 0x20) ]; } for( i = 0x100000; i < 0x800000; i++ ){ rom[ i ] ^= xor2[ (i % 0x20) ]; } for( i = 0x100000; i < 0x0800000; i += 4 ){ UINT16 *rom16 = (UINT16*)&rom[ i + 1 ]; *rom16 = BITSWAP16( *rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 ); } buf = malloc( 0x800000 ); memcpy( buf, rom, 0x800000 ); for( i = 0; i < 0x0100000 / 0x10000; i++ ){ ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 ); memcpy( &rom[ i * 0x10000 ], &buf[ ofst * 0x10000 ], 0x10000 ); } for( i = 0x100000; i < 0x800000; i += 0x100 ){ ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00700) + (BITSWAP8( ((i & 0x0ff000) >> 12), 5, 4, 7, 6, 1, 0, 3, 2 ) << 12); memcpy( &rom[ i ], &buf[ ofst ], 0x100 ); } free( buf ); buf = malloc( 0x800000 ); memcpy( buf, rom, 0x800000 ); memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 ); memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 ); free( buf ); } DRIVER_INIT( mslug5 ) { mslug5_px_decrypt(); neo_pcm2_playmore_2002(2); // Mslug5 neogeo_fix_bank_type = 1; kof2000_neogeo_gfx_decrypt(0x19); init_neogeo(); }
-
Thanks IQ. I'll wait for 0.102 before updating my build. New drivers: + DRIVER( raimaisj ) /* B36 © 1988 Taito Corporation */ + DRIVER( dayto2pe ) + DRIVER( robokdj2 ) /* UPL-88013 © 1988 */ + DRIVER( wondstck ) /* © ???? Yun Sung */ + DRIVER( ppcar ) /* © 1999 Icarus */
-
They are all clean compiles, and i'm making the command-line version. I've been a member there for long enough, may as well get some value out of it. Thanks!