trunk/src/mame/drivers/popobear.c
| r21843 | r21844 | |
| 2 | 2 | |
| 3 | 3 | Popo Bear (c) 2000 BMC |
| 4 | 4 | |
| 5 | | preliminary driver by Angelo Salese |
| 5 | driver by Angelo Salese, David Haywood |
| 6 | 6 | |
| 7 | 7 | TODO: |
| 8 | 8 | - auto-animation speed is erratic (way too fast); |
| r21843 | r21844 | |
| 281 | 281 | |
| 282 | 282 | if (param&0xf000) color_bank = (machine().rand() & 0x3); |
| 283 | 283 | |
| 284 | |
| 285 | |
| 286 | int add_it = 0; |
| 287 | |
| 288 | // this isn't understood, not enough evidence. |
| 289 | switch (param & 3) |
| 290 | { |
| 291 | case 0x0: // not used? |
| 292 | color_bank = (machine().rand() & 0x3); |
| 293 | add_it = color_bank*0x40; |
| 294 | break; |
| 295 | |
| 296 | case 0x1: // butterflies in intro, enemy characters, line of characters, stage start text |
| 297 | //color_bank = (machine().rand() & 0x3); |
| 298 | add_it = color_bank*0x40; |
| 299 | break; |
| 300 | |
| 301 | case 0x2: // characters in intro, main player, powerups, timer, large dancing chars between levels (0x3f?) |
| 302 | //color_bank = (machine().rand() & 0x3); |
| 303 | add_it = color_bank*0x40; |
| 304 | break; |
| 305 | |
| 306 | case 0x3: // letters on GAME OVER need this.. |
| 307 | add_it = color_bank*0x40; |
| 308 | add_it += 0x20; |
| 309 | break; |
| 310 | } |
| 311 | |
| 284 | 312 | if(param == 0) |
| 285 | 313 | continue; |
| 286 | 314 | |
| r21843 | r21844 | |
| 303 | 331 | // see scores when you colect an item, must be at least steps of 0x40 or one of the female panda gfx between levels breaks.. might depend on lower bits? |
| 304 | 332 | // granularity also means colour bank is applied *0x40 |
| 305 | 333 | // and we have 2 more possible colour bank bits |
| 306 | | // colours on game over screen are still wrong |
| 334 | // colours on game over screen are still wrong without the weird param kludge above |
| 307 | 335 | if (pix&0x3f) |
| 308 | 336 | { |
| 309 | | bitmap.pix16(y_draw, x_draw) = machine().pens[((pix+(color_bank*0x40))&0xff)+0x100]; |
| 337 | bitmap.pix16(y_draw, x_draw) = machine().pens[((pix+(add_it))&0xff)+0x100]; |
| 310 | 338 | } |
| 311 | 339 | } |
| 312 | 340 | |
| r21843 | r21844 | |
| 644 | 672 | ROM_LOAD( "popobear_ta-a-901.u9", 0x00000, 0x40000, CRC(f1e94926) SHA1(f4d6f5b5811d90d0069f6efbb44d725ff0d07e1c) ) |
| 645 | 673 | ROM_END |
| 646 | 674 | |
| 647 | | GAME( 2000, popobear, 0, popobear, popobear, driver_device, 0, ROT0, "BMC", "PoPo Bear", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) |
| 675 | GAME( 2000, popobear, 0, popobear, popobear, driver_device, 0, ROT0, "BMC", "PoPo Bear", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) |