src/mess/drivers/indiana.c
| r14216 | r14217 | |
| 13 | 13 | |
| 14 | 14 | #include "emu.h" |
| 15 | 15 | #include "cpu/m68000/m68000.h" |
| 16 | #include "video/pc_vga.h" |
| 16 | 17 | |
| 17 | 18 | |
| 18 | 19 | class indiana_state : public driver_device |
| r14216 | r14217 | |
| 20 | 21 | public: |
| 21 | 22 | indiana_state(const machine_config &mconfig, device_type type, const char *tag) |
| 22 | 23 | : driver_device(mconfig, type, tag) { } |
| 23 | | |
| 24 | | UINT8 *m_p_chargen; |
| 25 | | UINT8 *m_p_videoram; |
| 26 | 24 | }; |
| 27 | 25 | |
| 28 | 26 | |
| r14216 | r14217 | |
| 34 | 32 | AM_RANGE(0x00400000, 0x004fffff) AM_MIRROR(0x7f800000) AM_RAM // 16 bit PC IO |
| 35 | 33 | AM_RANGE(0x00500000, 0x005fffff) AM_MIRROR(0x7f800000) AM_RAM // 16 bit PC MEM |
| 36 | 34 | AM_RANGE(0x00600000, 0x006fffff) AM_MIRROR(0x7f800000) AM_RAM // 8 bit PC IO |
| 37 | | AM_RANGE(0x00700000, 0x007b7fff) AM_MIRROR(0x7f800000) AM_RAM // 8 bit PC MEM |
| 38 | | AM_RANGE(0x007b8000, 0x007fffff) AM_MIRROR(0x7f800000) AM_RAM AM_BASE(m_p_videoram) // 8 bit PC MEM |
| 35 | AM_RANGE(0x00700000, 0x007fffff) AM_MIRROR(0x7f800000) AM_RAM // 8 bit PC MEM |
| 39 | 36 | AM_RANGE(0x80000000, 0x803fffff) AM_MIRROR(0x7fc00000) AM_RAM // 4 MB RAM |
| 40 | 37 | ADDRESS_MAP_END |
| 41 | 38 | |
| r14216 | r14217 | |
| 49 | 46 | { |
| 50 | 47 | } |
| 51 | 48 | |
| 52 | | static VIDEO_START( indiana ) |
| 53 | | { |
| 54 | | indiana_state *state = machine.driver_data<indiana_state>(); |
| 55 | | static const UINT16 chargens[3] = { 0x6710, 0x671c, 0x66a4 }; |
| 56 | | state->m_p_chargen = machine.region("user1")->base()+chargens[rom_system_bios(machine)-1]; |
| 57 | | } |
| 58 | | |
| 59 | | static SCREEN_UPDATE_IND16( indiana ) |
| 60 | | { |
| 61 | | indiana_state *state = screen.machine().driver_data<indiana_state>(); |
| 62 | | UINT8 y,ra,chr,gfx,fg; |
| 63 | | UINT16 sy=0,ma=0,x; |
| 64 | | |
| 65 | | for (y = 0; y < 25; y++) |
| 66 | | { |
| 67 | | for (ra = 0; ra < 16; ra++) |
| 68 | | { |
| 69 | | UINT16 *p = &bitmap.pix16(sy++); |
| 70 | | |
| 71 | | for (x = ma; x < ma + 160; x+=2) |
| 72 | | { |
| 73 | | chr = state->m_p_videoram[(x^2)+1]; |
| 74 | | fg = state->m_p_videoram[x^2] & 7; |
| 75 | | |
| 76 | | gfx = state->m_p_chargen[(chr<<4) | (ra ^ 3) ]; |
| 77 | | |
| 78 | | *p++ = BIT(gfx, 7) ? fg : 0; |
| 79 | | *p++ = BIT(gfx, 6) ? fg : 0; |
| 80 | | *p++ = BIT(gfx, 5) ? fg : 0; |
| 81 | | *p++ = BIT(gfx, 4) ? fg : 0; |
| 82 | | *p++ = BIT(gfx, 3) ? fg : 0; |
| 83 | | *p++ = BIT(gfx, 2) ? fg : 0; |
| 84 | | *p++ = BIT(gfx, 1) ? fg : 0; |
| 85 | | *p++ = BIT(gfx, 0) ? fg : 0; |
| 86 | | } |
| 87 | | } |
| 88 | | ma+=160; |
| 89 | | } |
| 90 | | |
| 91 | | return 0; |
| 92 | | } |
| 93 | | |
| 94 | 49 | /* F4 Character Displayer */ |
| 95 | 50 | static const gfx_layout indiana_charlayout = |
| 96 | 51 | { |
| r14216 | r14217 | |
| 117 | 72 | MCFG_MACHINE_RESET(indiana) |
| 118 | 73 | |
| 119 | 74 | /* video hardware */ |
| 120 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 121 | | MCFG_SCREEN_REFRESH_RATE(50) |
| 122 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 123 | | MCFG_SCREEN_SIZE(640, 400) |
| 124 | | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1) |
| 125 | | MCFG_VIDEO_START(indiana) |
| 126 | | MCFG_SCREEN_UPDATE_STATIC(indiana) |
| 127 | 75 | MCFG_GFXDECODE(indiana) |
| 128 | | MCFG_PALETTE_LENGTH(8) |
| 129 | | //MCFG_PALETTE_INIT(black_and_white) |
| 76 | MCFG_FRAGMENT_ADD( pcvideo_vga ) |
| 130 | 77 | MACHINE_CONFIG_END |
| 131 | 78 | |
| 79 | READ8_HANDLER( indiana_vga_setting ) |
| 80 | { |
| 81 | return 0xff; // TODO |
| 82 | } |
| 83 | |
| 84 | static DRIVER_INIT( indiana ) |
| 85 | { |
| 86 | pc_vga_init(machine, indiana_vga_setting, NULL); |
| 87 | pc_vga_io_init(machine, machine.device("maincpu")->memory().space(AS_PROGRAM), 0x7f7a0000, machine.device("maincpu")->memory().space(AS_PROGRAM), 0x7f600000); |
| 88 | } |
| 89 | |
| 132 | 90 | /* ROM definition */ |
| 133 | 91 | ROM_START( indiana ) |
| 134 | 92 | ROM_REGION32_BE( 0x10000, "user1", ROMREGION_ERASEFF ) |
| r14216 | r14217 | |
| 143 | 101 | /* Driver */ |
| 144 | 102 | |
| 145 | 103 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 146 | | COMP( 1993, indiana, 0, 0, indiana, indiana, 0, "Indiana University", "Indiana University 68030 board", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 104 | COMP( 1993, indiana, 0, 0, indiana, indiana, indiana, "Indiana University", "Indiana University 68030 board", GAME_NOT_WORKING | GAME_NO_SOUND) |