src/mess/drivers/mz2500.c
| r8963 | r8964 | |
| 35 | 35 | - The Black Onyx: hangs at the title screen, background should also animate; |
| 36 | 36 | - The Tower of Druaga: has a small priority/layer clearance bug at the digital / analog screen select; |
| 37 | 37 | - Xevious: has issues with the window effects, it should actually be applied on TV layer and not CG. |
| 38 | | - Ys 3: crashes if you try to load it with different DSW settings |
| 38 | - Ys 3: has garbage on top / bottom (note: you have to load both disks at start-up otherwise it refuses to run) |
| 39 | 39 | |
| 40 | 40 | memory map: |
| 41 | 41 | 0x00000-0x3ffff Work RAM |
| r8963 | r8964 | |
| 177 | 177 | if(pen) |
| 178 | 178 | { |
| 179 | 179 | if((y*8+yi-s_y) >= 0 && (y*8+yi-s_y) < 200) |
| 180 | | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), x*8+xi) = machine->pens[pen]; |
| 180 | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), x*8+xi) = machine->pens[pen+(pal_select ? 0x000 : 0x208)]; |
| 181 | 181 | } |
| 182 | 182 | } |
| 183 | 183 | } |
| r8963 | r8964 | |
| 261 | 261 | { |
| 262 | 262 | if((y*8+yi-s_y) >= 0 && (y*8+yi-s_y) < 200) |
| 263 | 263 | { |
| 264 | | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), (x*8+xi)*2+0) = machine->pens[pen]; |
| 265 | | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), (x*8+xi)*2+1) = machine->pens[pen]; |
| 264 | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), (x*8+xi)*2+0) = machine->pens[pen+(pal_select ? 0x000 : 0x208)]; |
| 265 | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), (x*8+xi)*2+1) = machine->pens[pen+(pal_select ? 0x000 : 0x208)]; |
| 266 | 266 | } |
| 267 | 267 | } |
| 268 | 268 | else |
| 269 | 269 | { |
| 270 | 270 | if((y*8+yi-s_y) >= 0 && (y*8+yi-s_y) < 200) |
| 271 | | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), x*8+xi) = machine->pens[pen]; |
| 271 | *BITMAP_ADDR16(bitmap, (y*8+yi-s_y), x*8+xi) = machine->pens[pen+(pal_select ? 0x000 : 0x208)]; |
| 272 | 272 | } |
| 273 | 273 | } |
| 274 | 274 | } |
| r8963 | r8964 | |
| 440 | 440 | |
| 441 | 441 | //popmessage("%02x",cg_mask); |
| 442 | 442 | |
| 443 | | if(pal_select) |
| 444 | | { |
| 445 | | draw_cg_screen(screen->machine,bitmap,cliprect,0); |
| 446 | | draw_tv_screen(screen->machine,bitmap,cliprect); |
| 447 | | draw_cg_screen(screen->machine,bitmap,cliprect,1); |
| 443 | draw_cg_screen(screen->machine,bitmap,cliprect,0); |
| 444 | draw_tv_screen(screen->machine,bitmap,cliprect); |
| 445 | draw_cg_screen(screen->machine,bitmap,cliprect,1); |
| 448 | 446 | // popmessage("%02x (%02x %02x) (%02x %02x) (%02x %02x) (%02x %02x)",cg_reg[0x0f],cg_reg[0x10],cg_reg[0x11],cg_reg[0x12],cg_reg[0x13],cg_reg[0x14],cg_reg[0x15],cg_reg[0x16],cg_reg[0x17]); |
| 449 | | } |
| 450 | | else //4096 mode colors |
| 451 | | { |
| 452 | | draw_tv_screen(screen->machine,bitmap,cliprect); |
| 453 | | } |
| 454 | 447 | |
| 455 | 448 | return 0; |
| 456 | 449 | } |
| r8963 | r8964 | |
| 858 | 851 | { |
| 859 | 852 | case 0xdc: |
| 860 | 853 | wd17xx_set_drive(dev,data & 3); |
| 861 | | floppy_mon_w(floppy_get_device(space->machine, data & 3), (data & 0x80) ? ASSERT_LINE : CLEAR_LINE); |
| 854 | floppy_mon_w(floppy_get_device(space->machine, data & 3), (data & 0x80) ? CLEAR_LINE : ASSERT_LINE); |
| 862 | 855 | floppy_drive_set_ready_state(floppy_get_device(space->machine, data & 3), 1,0); |
| 863 | 856 | break; |
| 864 | 857 | case 0xdd: |
| r8963 | r8964 | |
| 1628 | 1621 | // printf("%02x\n",data); |
| 1629 | 1622 | fdc_reverse = (data & 2) ? 0x00 : 0xff; |
| 1630 | 1623 | pal_select = (data & 4) ? 1 : 0; |
| 1631 | | if((data & 4) == 0) |
| 1632 | | printf("Warning: 4096 color mode used\n"); |
| 1633 | 1624 | } |
| 1634 | 1625 | |
| 1635 | 1626 | static const ym2203_interface ym2203_interface_1 = |