trunk/src/mame/drivers/suna16.c
| r18668 | r18669 | |
| 107 | 107 | Ultra Balloon |
| 108 | 108 | ***************************************************************************/ |
| 109 | 109 | |
| 110 | READ8_MEMBER(suna16_state::uballoon_prot_r) |
| 111 | { |
| 112 | UINT8 ret = 0; |
| 113 | |
| 114 | switch (offset) |
| 115 | { |
| 116 | case 0x0011/2: |
| 117 | ret = ((m_prot & 0x03) == 0x03) ? 2 : 0; |
| 118 | ret |= ((m_prot & 0x30) == 0x30) ? 1 : 0; |
| 119 | break; |
| 120 | |
| 121 | case 0x0311/2: |
| 122 | ret = 0x03; |
| 123 | break; |
| 124 | |
| 125 | default: |
| 126 | //logerror("uballoon_prot_r %04X\n", offset); |
| 127 | break; |
| 128 | } |
| 129 | |
| 130 | return ret; |
| 131 | } |
| 132 | |
| 133 | WRITE8_MEMBER(suna16_state::uballoon_prot_w) |
| 134 | { |
| 135 | switch (offset) |
| 136 | { |
| 137 | case 0x0001/2: |
| 138 | m_prot = data; |
| 139 | break; |
| 140 | |
| 141 | default: |
| 142 | //logerror("uballoon_prot_w %04X=%02X\n", offset, data); |
| 143 | break; |
| 144 | } |
| 145 | } |
| 146 | |
| 110 | 147 | static ADDRESS_MAP_START( uballoon_map, AS_PROGRAM, 16, suna16_state ) |
| 111 | 148 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 112 | 149 | AM_RANGE(0x800000, 0x803fff) AM_RAM // RAM |
| r18668 | r18669 | |
| 120 | 157 | AM_RANGE(0x600008, 0x600009) AM_WRITE(uballoon_leds_w) // Leds |
| 121 | 158 | AM_RANGE(0x60000c, 0x60000d) AM_WRITENOP // ? IRQ 1 Ack |
| 122 | 159 | AM_RANGE(0x600010, 0x600011) AM_WRITENOP // ? IRQ 1 Ack |
| 123 | | AM_RANGE(0xa00000, 0xa0ffff) AM_NOP // Protection |
| 160 | AM_RANGE(0xa00000, 0xa0ffff) AM_READWRITE8(uballoon_prot_r, uballoon_prot_w, 0x00ff) // Protection |
| 124 | 161 | ADDRESS_MAP_END |
| 125 | 162 | |
| 126 | 163 | |
| r18668 | r18669 | |
| 145 | 182 | Best Of Best |
| 146 | 183 | ***************************************************************************/ |
| 147 | 184 | |
| 148 | | READ16_MEMBER(suna16_state::bestbest_prot_r) |
| 185 | READ8_MEMBER(suna16_state::bestbest_prot_r) |
| 149 | 186 | { |
| 150 | | |
| 151 | 187 | return m_prot; |
| 152 | 188 | } |
| 153 | 189 | |
| 154 | | WRITE16_MEMBER(suna16_state::bestbest_prot_w) |
| 190 | WRITE8_MEMBER(suna16_state::bestbest_prot_w) |
| 155 | 191 | { |
| 156 | | if (ACCESSING_BITS_0_7) |
| 192 | switch (data) |
| 157 | 193 | { |
| 158 | | |
| 159 | | switch (data & 0xff) |
| 160 | | { |
| 161 | | case 0x00: m_prot = m_prot ^ 0x0009; break; |
| 162 | | case 0x08: m_prot = m_prot ^ 0x0002; break; |
| 163 | | case 0x0c: m_prot = m_prot ^ 0x0003; break; |
| 164 | | //default: logerror("CPU#0 PC %06X - Unknown protection value: %04X\n", space.device().safe_pc(), data); |
| 165 | | } |
| 194 | case 0x00: m_prot = m_prot ^ 0x0009; break; |
| 195 | case 0x08: m_prot = m_prot ^ 0x0002; break; |
| 196 | case 0x0c: m_prot = m_prot ^ 0x0003; break; |
| 197 | //default: logerror("CPU#0 PC %06X - Unknown protection value: %04X\n", space.device().safe_pc(), data); |
| 166 | 198 | } |
| 167 | 199 | } |
| 168 | 200 | |
| 169 | | |
| 170 | 201 | static ADDRESS_MAP_START( bestbest_map, AS_PROGRAM, 16, suna16_state ) |
| 171 | 202 | AM_RANGE( 0x000000, 0x03ffff ) AM_ROM AM_MIRROR(0xc0000) // ROM |
| 172 | 203 | AM_RANGE( 0x200000, 0x2fffff ) AM_ROM AM_REGION("user1", 0) // ROM |
| 173 | 204 | AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT("P1") AM_WRITE(suna16_soundlatch_w) // To Sound CPU |
| 174 | 205 | AM_RANGE( 0x500002, 0x500003 ) AM_READ_PORT("P2") AM_WRITE(bestbest_flipscreen_w) // P2 + Coins, Flip Screen |
| 175 | 206 | AM_RANGE( 0x500004, 0x500005 ) AM_READ_PORT("DSW") AM_WRITE(bestbest_coin_w) // Coin Counter |
| 176 | | AM_RANGE( 0x500008, 0x500009 ) AM_WRITE(bestbest_prot_w ) // Protection |
| 177 | | AM_RANGE( 0x500018, 0x500019 ) AM_READ(bestbest_prot_r ) // |
| 207 | AM_RANGE( 0x500008, 0x500009 ) AM_WRITE8(bestbest_prot_w, 0x00ff) // Protection |
| 208 | AM_RANGE( 0x500018, 0x500019 ) AM_READ8(bestbest_prot_r, 0x00ff) // " |
| 178 | 209 | AM_RANGE( 0x540000, 0x540fff ) AM_READWRITE(suna16_paletteram16_r, suna16_paletteram16_w ) // Banked(?) Palette |
| 179 | 210 | AM_RANGE( 0x541000, 0x54ffff ) AM_RAM // |
| 180 | 211 | AM_RANGE( 0x580000, 0x58ffff ) AM_RAM // RAM |
| r18668 | r18669 | |
| 1025 | 1056 | ***************************************************************************/ |
| 1026 | 1057 | |
| 1027 | 1058 | ROM_START( bssoccer ) |
| 1028 | | |
| 1029 | 1059 | ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 Code */ |
| 1030 | 1060 | ROM_LOAD16_BYTE( "02", 0x000000, 0x080000, CRC(32871005) SHA1(b094ee3f4fc24c0521915d565f6e203d51e51f6d) ) |
| 1031 | 1061 | ROM_LOAD16_BYTE( "01", 0x000001, 0x080000, CRC(ace00db6) SHA1(6bd146f9b44c97be77578b4f0ffa28cbf66283c2) ) |
| r18668 | r18669 | |
| 1048 | 1078 | ROM_LOAD( "06", 0x180000, 0x080000, CRC(d42ce84b) SHA1(3a3d07d571793ecf4c936d3af244c63b9e4b4bb9) ) |
| 1049 | 1079 | ROM_LOAD( "08", 0x200000, 0x080000, CRC(96cd2136) SHA1(1241859d6c5e64de73898763f0358171ea4aeae3) ) |
| 1050 | 1080 | ROM_LOAD( "10", 0x280000, 0x080000, CRC(1ca94d21) SHA1(23d892b840e37064a175584f955f25f990d9179d) ) |
| 1051 | | |
| 1052 | 1081 | ROM_END |
| 1053 | 1082 | |
| 1054 | 1083 | |
| r18668 | r18669 | |
| 1073 | 1102 | ***************************************************************************/ |
| 1074 | 1103 | |
| 1075 | 1104 | ROM_START( uballoon ) |
| 1076 | | |
| 1077 | 1105 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */ |
| 1078 | 1106 | ROM_LOAD16_BYTE( "prg2.rom", 0x000000, 0x080000, CRC(72ab80ea) SHA1(b755940877cf286559208106dd5e6933aeb72242) ) |
| 1079 | 1107 | ROM_LOAD16_BYTE( "prg1.rom", 0x000001, 0x080000, CRC(27a04f55) SHA1(a530294b000654db8d84efe4835b72e0dca62819) ) |
| r18668 | r18669 | |
| 1091 | 1119 | ROM_LOAD( "gfx2.rom", 0x080000, 0x080000, CRC(6307aa60) SHA1(00406eba98ec368e72ee53c08b9111dec4f2552f) ) |
| 1092 | 1120 | ROM_LOAD( "gfx3.rom", 0x100000, 0x080000, CRC(718f3150) SHA1(5971f006203f86743ebc825e4ab1ed1f811e3165) ) |
| 1093 | 1121 | ROM_LOAD( "gfx4.rom", 0x180000, 0x080000, CRC(af7e057e) SHA1(67a03b54ffa1483c8ed044f27287b7f3f1150455) ) |
| 1094 | | |
| 1095 | 1122 | ROM_END |
| 1096 | 1123 | |
| 1097 | | |
| 1098 | | DRIVER_INIT_MEMBER(suna16_state,uballoon) |
| 1099 | | { |
| 1100 | | UINT16 *RAM = (UINT16 *) machine().root_device().memregion("maincpu")->base(); |
| 1101 | | |
| 1102 | | // Patch out the protection checks |
| 1103 | | RAM[0x0113c/2] = 0x4e71; // bne $646 |
| 1104 | | RAM[0x0113e/2] = 0x4e71; // "" |
| 1105 | | RAM[0x01784/2] = 0x600c; // beq $1792 |
| 1106 | | RAM[0x018e2/2] = 0x600c; // beq $18f0 |
| 1107 | | RAM[0x03c54/2] = 0x600C; // beq $3c62 |
| 1108 | | RAM[0x126a0/2] = 0x4e71; // bne $1267a (ROM test) |
| 1109 | | } |
| 1110 | | |
| 1111 | 1124 | /*************************************************************************** |
| 1112 | 1125 | Suna Quiz 6000 Academy |
| 1113 | 1126 | |
| r18668 | r18669 | |
| 1250 | 1263 | |
| 1251 | 1264 | ***************************************************************************/ |
| 1252 | 1265 | |
| 1253 | | GAME( 1994, bestbest, 0, bestbest, bestbest, driver_device, 0, ROT0, "SunA", "Best Of Best", 0 ) |
| 1254 | | GAME( 1994, sunaq, 0, sunaq, sunaq, driver_device, 0, ROT0, "SunA", "SunA Quiz 6000 Academy (940620-6)", 0 ) // Date/Version on-screen is 940620-6, but in the program rom it's 1994,6,30 K.H.T V6.00 |
| 1255 | | GAME( 1996, bssoccer, 0, bssoccer, bssoccer, driver_device, 0, ROT0, "SunA (Unico license)", "Back Street Soccer", 0 ) |
| 1256 | | GAME( 1996, uballoon, 0, uballoon, uballoon, suna16_state, uballoon, ROT0, "SunA (Unico license)", "Ultra Balloon", 0 ) |
| 1266 | GAME( 1994, bestbest, 0, bestbest, bestbest, driver_device, 0, ROT0, "SunA", "Best Of Best", 0 ) |
| 1267 | GAME( 1994, sunaq, 0, sunaq, sunaq, driver_device, 0, ROT0, "SunA", "SunA Quiz 6000 Academy (940620-6)", 0 ) // Date/Version on-screen is 940620-6, but in the program rom it's 1994,6,30 K.H.T V6.00 |
| 1268 | GAME( 1996, bssoccer, 0, bssoccer, bssoccer, driver_device, 0, ROT0, "SunA (Unico license)", "Back Street Soccer", 0 ) |
| 1269 | GAME( 1996, uballoon, 0, uballoon, uballoon, driver_device, 0, ROT0, "SunA (Unico license)", "Ultra Balloon", 0 ) |