trunk/src/mame/drivers/popobear.c
| r21817 | r21818 | |
| 183 | 183 | // ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros! |
| 184 | 184 | UINT8* vram = reinterpret_cast<UINT8 *>(m_spr.target()); |
| 185 | 185 | int i; |
| 186 | | #if 0 |
| 187 | | static int bank_test = 1; |
| 188 | 186 | |
| 189 | | if(machine().input().code_pressed_once(KEYCODE_Z)) |
| 190 | | bank_test<<=1; |
| 191 | | |
| 192 | | if(machine().input().code_pressed_once(KEYCODE_X)) |
| 193 | | bank_test>>=1; |
| 194 | | |
| 195 | | popmessage("%02x",bank_test); |
| 196 | | #endif |
| 197 | | |
| 198 | 187 | /* |
| 199 | 188 | ???? ---- ---- ---- unused? |
| 200 | 189 | ---- xxxx ---- ---- priority? |
| 201 | 190 | ---- ---- x--- ---- Y direction |
| 202 | 191 | ---- ---- -x-- ---- X direction |
| 203 | | ---- ---- --xx ---- width |
| 192 | ---- ---- --xx ---- size (height & width) |
| 204 | 193 | ---- ---- ---- xx-- color bank |
| 205 | | ---- ---- ---- --xx height? |
| 194 | ---- ---- ---- --xx ?? |
| 206 | 195 | */ |
| 207 | 196 | |
| 208 | 197 | /* 0x106 = 8 x 8 */ |
| r21817 | r21818 | |
| 214 | 203 | int spr_num = vram[i+0x7f800+6]|(vram[i+0x7f800+7]<<8); |
| 215 | 204 | int param = vram[i+0x7f800+0]|(vram[i+0x7f800+1]<<8); |
| 216 | 205 | int width = 8 << ((param & 0x30)>>4); |
| 217 | | int height = 32; |
| 206 | int height = width; // sprites are always square? |
| 207 | |
| 218 | 208 | int color_bank = ((param & 0xc)<<4); |
| 219 | 209 | int x_dir = param & 0x40; |
| 220 | 210 | int y_dir = param & 0x80; |
| 221 | 211 | |
| 222 | | if((param & 0x3) == 3) // actually sprite mode? |
| 223 | | color_bank |= 0x20; |
| 212 | if (x&0x8000) x-= 0x10000; |
| 213 | if (y&0x8000) y-= 0x10000; |
| 224 | 214 | |
| 225 | 215 | if(param == 0) |
| 226 | 216 | continue; |
| 227 | 217 | |
| 228 | | //if(param & bank_test) |
| 229 | | // continue; |
| 230 | | |
| 231 | 218 | spr_num <<= 3; |
| 232 | 219 | |
| 233 | 220 | for(int yi=0;yi<height;yi++) |
| r21817 | r21818 | |
| 316 | 303 | |
| 317 | 304 | AM_RANGE(0x600000, 0x600001) AM_WRITENOP |
| 318 | 305 | AM_RANGE(0x620000, 0x620001) AM_READ8(popo_620000_r,0xff00) AM_WRITENOP |
| 319 | | AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("gfx1", 0) // u5 & u6 |
| 320 | | AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("gfx2", 0) // u7 & u8 |
| 306 | AM_RANGE(0x800000, 0xbfffff) AM_ROM |
| 321 | 307 | ADDRESS_MAP_END |
| 322 | 308 | |
| 323 | 309 | static INPUT_PORTS_START( popobear ) |
| r21817 | r21818 | |
| 465 | 451 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 466 | 452 | MCFG_SCREEN_UPDATE_DRIVER(popobear_state, screen_update_popobear) |
| 467 | 453 | |
| 468 | | // MCFG_GFXDECODE(popobear) |
| 469 | | |
| 470 | 454 | MCFG_SCREEN_SIZE(128*8, 32*8) |
| 471 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) |
| 455 | MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 239) |
| 472 | 456 | MCFG_PALETTE_LENGTH(256*2) |
| 473 | 457 | |
| 474 | | |
| 475 | 458 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 476 | 459 | |
| 477 | 460 | MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_42MHz/16) // XTAL CORRECT, DIVISOR GUESSED |
| r21817 | r21818 | |
| 483 | 466 | |
| 484 | 467 | |
| 485 | 468 | ROM_START( popobear ) |
| 486 | | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 Code */ |
| 487 | | ROM_LOAD16_BYTE( "popobear_en-a-301_1.6.u3", 0x000001, 0x20000, CRC(b934adf6) SHA1(93431c7a19af812b549aad35cc1176a81805ffab) ) |
| 488 | | ROM_LOAD16_BYTE( "popobear_en-a-401_1.6.u4", 0x000000, 0x20000, CRC(0568af9c) SHA1(920531dbc4bbde2d1db062bd5c48b97dd50b7185) ) |
| 469 | ROM_REGION( 0x1000000, "maincpu", 0 ) /* 68000 Code + gfx data */ |
| 470 | ROM_LOAD16_BYTE( "popobear_en-a-301_1.6.u3", 0x000001, 0x020000, CRC(b934adf6) SHA1(93431c7a19af812b549aad35cc1176a81805ffab) ) |
| 471 | ROM_LOAD16_BYTE( "popobear_en-a-401_1.6.u4", 0x000000, 0x020000, CRC(0568af9c) SHA1(920531dbc4bbde2d1db062bd5c48b97dd50b7185) ) |
| 472 | ROM_LOAD16_BYTE( "popobear_en-a-501.u5", 0x800001, 0x100000, CRC(185901a9) SHA1(7ff82b5751645df53435eaa66edce589684cc5c7) ) |
| 473 | ROM_LOAD16_BYTE( "popobear_en-a-601.u6", 0x800000, 0x100000, CRC(84fa9f3f) SHA1(34dd7873f88b0dae5fb81fe84e82d2b6b49f7332) ) |
| 474 | ROM_LOAD16_BYTE( "popobear_en-a-701.u7", 0xa00001, 0x100000, CRC(45eba6d0) SHA1(0278602ed57ac45040619d590e6cc85e2cfeed31) ) |
| 475 | ROM_LOAD16_BYTE( "popobear_en-a-801.u8", 0xa00000, 0x100000, CRC(2760f2e6) SHA1(58af59f486c9df930f7c124f89154f8f389a5bd7) ) |
| 489 | 476 | |
| 490 | | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 491 | | ROM_LOAD16_BYTE( "popobear_en-a-501.u5", 0x000000, 0x100000, CRC(185901a9) SHA1(7ff82b5751645df53435eaa66edce589684cc5c7) ) |
| 492 | | ROM_LOAD16_BYTE( "popobear_en-a-601.u6", 0x000001, 0x100000, CRC(84fa9f3f) SHA1(34dd7873f88b0dae5fb81fe84e82d2b6b49f7332) ) |
| 493 | | |
| 494 | | ROM_REGION( 0x200000, "gfx2", 0 ) |
| 495 | | ROM_LOAD16_BYTE( "popobear_en-a-701.u7", 0x000000, 0x100000, CRC(45eba6d0) SHA1(0278602ed57ac45040619d590e6cc85e2cfeed31) ) |
| 496 | | ROM_LOAD16_BYTE( "popobear_en-a-801.u8", 0x000001, 0x100000, CRC(2760f2e6) SHA1(58af59f486c9df930f7c124f89154f8f389a5bd7) ) |
| 497 | | |
| 498 | 477 | ROM_REGION( 0x040000, "oki", 0 ) /* Samples */ |
| 499 | 478 | ROM_LOAD( "popobear_ta-a-901.u9", 0x00000, 0x40000, CRC(f1e94926) SHA1(f4d6f5b5811d90d0069f6efbb44d725ff0d07e1c) ) |
| 500 | 479 | ROM_END |