branches/kale/src/mame/drivers/raiden2.c
| r244497 | r244498 | |
| 1 | | // license:? (pending decision) |
| 1 | // license:? |
| 2 | 2 | // copyright-holders:Olivier Galibert, Angelo Salese, David Haywood, Tomasz Slanina |
| 3 | 3 | /******************************************************************************************************** |
| 4 | 4 | |
| 5 | 5 | Seibu Protected 1993-94 era hardware, V30 based (sequel to the 68k based hardware) |
| 6 | TODO: figure out the rest of the protection |
| 7 | TODO: Zero Team presumably needs additive blending on the character screen |
| 6 | 8 | |
| 7 | | TODO: |
| 8 | | * zeroteam - sort-DMA doesn't seem to work too well, sprite-sprite priorities are broken as per now |
| 9 | TODO: |
| 10 | - Zero Team currently crashes due of an unknown check with collision detection. |
| 11 | Additionally: |
| 12 | 8E377: C7 06 00 05 80 A9 mov word ptr [500h],0A980h |
| 13 | 8E37D: C7 06 00 05 00 B9 mov word ptr [500h],0B900h |
| 14 | 8E383: F7 06 88 05 FF FF test word ptr [588h],0FFFFh ;checks unknown collision detection port with 0xffff? |
| 15 | 8E389: 75 0A bne 8E395h |
| 9 | 16 | |
| 10 | | * xsedae - it does an "8-liner"-style scroll during attract, doesn't work too well. |
| 11 | | |
| 12 | | * sprite chip is the same as seibuspi.c and feversoc.c, needs device-ification and merging. |
| 13 | | |
| 14 | | * sprite chip also uses first entry for "something" that isn't sprite, some of them looks clipping |
| 15 | | regions (150 - ff in zeroteam, 150 - 0 and 150 - 80 in raiden2). Latter probably do double buffering |
| 16 | | on odd/even frames, by updating only top or bottom part of screen. |
| 17 | | |
| 18 | 17 | =========================================================================================================== |
| 19 | 18 | |
| 20 | 19 | raiden 2 board test note 17/04/08 (based on test by dox) |
| r244497 | r244498 | |
| 25 | 24 | value of 0x80 puts 0x00000-0x1ffff at 0x20000 - 0x3ffff |
| 26 | 25 | value of 0x00 puts 0x20000-0x3ffff at 0x20000 - 0x3ffff |
| 27 | 26 | |
| 27 | === |
| 28 | 28 | |
| 29 | 29 | =========================================================================================================== |
| 30 | 30 | |
| r244497 | r244498 | |
| 130 | 130 | |
| 131 | 131 | The games in legionna.c use (almost?) the same protection chips. |
| 132 | 132 | |
| 133 | Current Problem(s) - in order of priority |
| 134 | |
| 135 | High Priority |
| 136 | |
| 137 | Protection |
| 138 | - zeroteam has bogus collision detection; |
| 139 | - raiden2 has a weird movement after that the ship completes animation from the aircraft. Probably 42c2 should be floating point rounded ... |
| 140 | - (and probably more) |
| 141 | |
| 142 | Unemulated 0-0x3ffff ROM banking for raidendx, but it's unknown if/where it's used (hopefully NOT on getting perfect on Alpha course). |
| 143 | |
| 144 | zeroteam - sort-DMA doesn't seem to work too well, sprite-sprite priorities are broken as per now |
| 145 | |
| 146 | xsedae - do an "8-liner"-style scroll during attract, doesn't work too well. |
| 147 | |
| 148 | sprite chip is the same as seibuspi.c and feversoc.c, needs device-ification and merging. |
| 149 | |
| 150 | sprite chip also uses first entry for "something" that isn't sprite, some of them looks clipping |
| 151 | regions (150 - ff in zeroteam, 150 - 0 and 150 - 80 in raiden2). Latter probably do double buffering |
| 152 | on odd/even frames, by updating only top or bottom part of screen. |
| 153 | |
| 154 | Low Priority |
| 155 | |
| 133 | 156 | ********************************************************************************************************/ |
| 134 | 157 | |
| 135 | 158 | #include "emu.h" |
| r244497 | r244498 | |
| 1344 | 1367 | |
| 1345 | 1368 | /* video hardware */ |
| 1346 | 1369 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1347 | | MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) |
| 1370 | MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) |
| 1371 | #if 1 |
| 1372 | MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */ |
| 1373 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(500) /* not accurate */) |
| 1374 | MCFG_SCREEN_SIZE(44*8, 34*8) |
| 1375 | MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 30*8-1) |
| 1376 | #else // this should be correct but currently causes sprite flickering, visible from the very start of the intro |
| 1348 | 1377 | MCFG_SCREEN_RAW_PARAMS(XTAL_32MHz/4,512,0,40*8,282,0,30*8) /* hand-tuned to match ~55.47 */ |
| 1378 | #endif |
| 1349 | 1379 | MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2) |
| 1350 | 1380 | |
| 1351 | 1381 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", raiden2) |