trunk/src/mame/drivers/funworld.c
| r18953 | r18954 | |
| 23 | 23 | * Jolly Card (Italian, encrypted bootleg), bootleg, 1990. |
| 24 | 24 | * Super Joly 2000 - 3x, M.P. 1985. |
| 25 | 25 | * Jolly Card (Austrian, Fun World, bootleg), Inter Games, 1986. |
| 26 | * Jolly Card (Spanish, blue TAB board, encrypted), TAB Austria, 1992. |
| 26 | 27 | * Bonus Card (Austrian), Fun World, 1986. |
| 27 | 28 | * Bonus Card (Austrian, ATG Electronic hack), Fun World, 1986. |
| 28 | 29 | * Big Deal (Hungarian, set 1), Fun World, 1986. |
| r18953 | r18954 | |
| 804 | 805 | - Added PLD dumps to bonuscrd and powercrd. |
| 805 | 806 | |
| 806 | 807 | [2012/11/14] |
| 807 | | - Added a Jolly Card set from an unknown encrypted PCB |
| 808 | | 'alla TAB blue board. Graphics are decrypted. Program |
| 809 | | needs decryption work. |
| 808 | - Added a Jolly Card spanish set from an unknown encrypted |
| 809 | PCB 'alla TAB blue board. Graphics are decrypted. |
| 810 | - Decrypted the program ROM. |
| 811 | - Added button-lamps layout. |
| 812 | - Added a default NVRAM. |
| 813 | - Promoted to working state. |
| 810 | 814 | |
| 811 | 815 | |
| 812 | 816 | *** TO DO *** |
| r18953 | r18954 | |
| 4757 | 4761 | |
| 4758 | 4762 | |
| 4759 | 4763 | /* |
| 4760 | | Jolly Card (unknown, encrypted) |
| 4764 | Jolly Card (spanish, encrypted) |
| 4761 | 4765 | ------------------------------- |
| 4762 | 4766 | |
| 4763 | 4767 | Rare unknown board with scratched chips. |
| r18953 | r18954 | |
| 4766 | 4770 | |
| 4767 | 4771 | 3 roms. |
| 4768 | 4772 | |
| 4773 | Graphics are encrypted 'alla blue TAB board. |
| 4774 | Program is encrypted through scrambling data lines. |
| 4775 | |
| 4769 | 4776 | */ |
| 4770 | 4777 | |
| 4771 | | ROM_START( jolycdct ) /* Encrypted program in a module. Blue TAB PCB encrypted graphics */ |
| 4778 | ROM_START( jolycdsp ) /* Encrypted program in a module. Blue TAB PCB encrypted graphics */ |
| 4772 | 4779 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 4773 | 4780 | ROM_LOAD( "ct3.bin", 0x8000, 0x8000, CRC(0c9cbae6) SHA1(4f834370229797cac302a5185ed1e77ef2b7cabb) ) |
| 4774 | 4781 | |
| r18953 | r18954 | |
| 4776 | 4783 | ROM_LOAD( "ct2.bin", 0x0000, 0x8000, CRC(7569e719) SHA1(f96e1e72bc13d1888f3868f8d404fd3db94db7b2) ) |
| 4777 | 4784 | ROM_LOAD( "ct1.bin", 0x8000, 0x8000, CRC(8f438635) SHA1(3200e20f4b28173cc2a68d0f87969627570418dc) ) |
| 4778 | 4785 | |
| 4786 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 4787 | ROM_LOAD( "ctunk_nvram.bin", 0x0000, 0x0800, CRC(c55c6706) SHA1(a38ae926f057fb47e48ca841b2d097fc4fd06416) ) |
| 4788 | |
| 4779 | 4789 | ROM_REGION( 0x0200, "proms", 0 ) /* Borrowed from the parent set */ |
| 4780 | 4790 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 4781 | 4791 | ROM_END |
| r18953 | r18954 | |
| 5150 | 5160 | } |
| 5151 | 5161 | |
| 5152 | 5162 | |
| 5163 | DRIVER_INIT_MEMBER(funworld_state, ctunk) |
| 5164 | /********************************************************* |
| 5165 | |
| 5166 | CTUNK: Rare board with blue TAB board encryption scheme |
| 5167 | plus a daughterboard for program encryption. |
| 5168 | |
| 5169 | *********************************************************/ |
| 5170 | { |
| 5171 | UINT8 *rom = machine().root_device().memregion("maincpu")->base(); |
| 5172 | int size = machine().root_device().memregion("maincpu")->bytes(); |
| 5173 | int start = 0x8000; |
| 5174 | |
| 5175 | UINT8 *buffer; |
| 5176 | int i, a; |
| 5177 | |
| 5178 | /***************************** |
| 5179 | * Program ROM decryption * |
| 5180 | *****************************/ |
| 5181 | |
| 5182 | /* data lines swap: 76543210 -> 56734012 */ |
| 5183 | |
| 5184 | for (i = start; i < size; i++) |
| 5185 | { |
| 5186 | rom[i] = BITSWAP8(rom[i], 5, 6, 7, 3, 4, 0, 1, 2); |
| 5187 | } |
| 5188 | |
| 5189 | buffer = auto_alloc_array(machine(), UINT8, size); |
| 5190 | memcpy(buffer, rom, size); |
| 5191 | |
| 5192 | |
| 5193 | /***************************** |
| 5194 | * Graphics ROMs decryption * |
| 5195 | *****************************/ |
| 5196 | |
| 5197 | int x, na, nb, nad, nbd; |
| 5198 | UINT8 *src = machine().root_device().memregion( "gfx1" )->base(); |
| 5199 | UINT8 *ROM = machine().root_device().memregion("maincpu")->base(); |
| 5200 | |
| 5201 | for (x=0x0000; x < 0x10000; x++) |
| 5202 | { |
| 5203 | na = src[x] & 0xf0; /* nibble A */ |
| 5204 | nb = src[x] << 4; /* nibble B */ |
| 5205 | |
| 5206 | nad = (na ^ (na >> 1)) << 1; /* nibble A decrypted */ |
| 5207 | nbd = ((nb ^ (nb >> 1)) >> 3) & 0x0f; /* nibble B decrypted */ |
| 5208 | |
| 5209 | src[x] = nad + nbd; /* decrypted byte */ |
| 5210 | } |
| 5211 | } |
| 5212 | |
| 5213 | |
| 5153 | 5214 | /********************************************** |
| 5154 | 5215 | * Game Drivers * |
| 5155 | 5216 | **********************************************/ |
| r18953 | r18954 | |
| 5168 | 5229 | GAMEL( 1990, jolycdib, jollycrd, cuoreuno, jolycdib, funworld_state, tabblue, ROT0, "bootleg", "Jolly Card (Italian, encrypted bootleg)", 0, layout_jollycrd ) // not a real TAB blue PCB |
| 5169 | 5230 | GAMEL( 1985, sjcd2kx3, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "M.P.", "Super Joly 2000 - 3x", 0, layout_jollycrd ) |
| 5170 | 5231 | GAME( 1986, jolycdab, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "Inter Games", "Jolly Card (Austrian, Fun World, bootleg)", GAME_NOT_WORKING ) |
| 5171 | | GAME( 199?, jolycdct, jollycrd, cuoreuno, jolycdit, funworld_state, tabblue, ROT0, "TAB Austria", "Jolly Card (unknown, encrypted)", GAME_NOT_WORKING ) |
| 5232 | GAMEL( 1992, jolycdsp, jollycrd, cuoreuno, jolycdit, funworld_state, ctunk, ROT0, "TAB Austria", "Jolly Card (Spanish, blue TAB board, encrypted)", 0, layout_royalcrd ) |
| 5172 | 5233 | |
| 5173 | 5234 | // Bonus Card based... |
| 5174 | 5235 | GAMEL( 1986, bonuscrd, 0, fw2ndpal, bonuscrd, driver_device, 0, ROT0, "Fun World", "Bonus Card (Austrian)", GAME_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background |