trunk/src/mame/drivers/quizo.c
| r243626 | r243627 | |
| 35 | 35 | : driver_device(mconfig, type, tag), |
| 36 | 36 | m_maincpu(*this, "maincpu") { } |
| 37 | 37 | |
| 38 | required_device<cpu_device> m_maincpu; |
| 39 | |
| 38 | 40 | UINT8 *m_videoram; |
| 39 | 41 | UINT8 m_port60; |
| 40 | 42 | UINT8 m_port70; |
| 43 | |
| 41 | 44 | DECLARE_WRITE8_MEMBER(vram_w); |
| 42 | 45 | DECLARE_WRITE8_MEMBER(port70_w); |
| 43 | 46 | DECLARE_WRITE8_MEMBER(port60_w); |
| 47 | |
| 44 | 48 | DECLARE_DRIVER_INIT(quizo); |
| 45 | 49 | DECLARE_PALETTE_INIT(quizo); |
| 46 | | UINT32 screen_update_quizo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 47 | | required_device<cpu_device> m_maincpu; |
| 50 | |
| 51 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 48 | 52 | }; |
| 49 | 53 | |
| 50 | 54 | |
| r243626 | r243627 | |
| 82 | 86 | } |
| 83 | 87 | } |
| 84 | 88 | |
| 85 | | UINT32 quizo_state::screen_update_quizo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 89 | UINT32 quizo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 86 | 90 | { |
| 87 | | UINT8 *videoram = m_videoram; |
| 88 | 91 | int x,y; |
| 89 | 92 | for(y=0;y<200;y++) |
| 90 | 93 | { |
| 91 | 94 | for(x=0;x<80;x++) |
| 92 | 95 | { |
| 93 | | int data=videoram[y*80+x]; |
| 94 | | int data1=videoram[y*80+x+0x4000]; |
| 96 | int data=m_videoram[y*80+x]; |
| 97 | int data1=m_videoram[y*80+x+0x4000]; |
| 95 | 98 | int pix; |
| 96 | 99 | |
| 97 | 100 | pix=(data&1)|(((data>>4)&1)<<1)|((data1&1)<<2)|(((data1>>4)&1)<<3); |
| r243626 | r243627 | |
| 115 | 118 | |
| 116 | 119 | WRITE8_MEMBER(quizo_state::vram_w) |
| 117 | 120 | { |
| 118 | | UINT8 *videoram = m_videoram; |
| 119 | 121 | int bank=(m_port70&8)?1:0; |
| 120 | | videoram[offset+bank*0x4000]=data; |
| 122 | m_videoram[offset+bank*0x4000]=data; |
| 121 | 123 | } |
| 122 | 124 | |
| 123 | 125 | WRITE8_MEMBER(quizo_state::port70_w) |
| r243626 | r243627 | |
| 133 | 135 | data=0; |
| 134 | 136 | } |
| 135 | 137 | m_port60=data; |
| 136 | | membank("bank1")->set_base(&memregion("user1")->base()[rombankLookup[data]*0x4000] ); |
| 138 | membank("bank1")->set_entry(rombankLookup[data]); |
| 137 | 139 | } |
| 138 | 140 | |
| 139 | 141 | static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, quizo_state ) |
| r243626 | r243627 | |
| 218 | 220 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 219 | 221 | MCFG_SCREEN_SIZE(320, 200) |
| 220 | 222 | MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8, 200-1) |
| 221 | | MCFG_SCREEN_UPDATE_DRIVER(quizo_state, screen_update_quizo) |
| 223 | MCFG_SCREEN_UPDATE_DRIVER(quizo_state, screen_update) |
| 222 | 224 | MCFG_SCREEN_PALETTE("palette") |
| 223 | 225 | |
| 224 | 226 | MCFG_PALETTE_ADD("palette", 16) |
| r243626 | r243627 | |
| 265 | 267 | DRIVER_INIT_MEMBER(quizo_state,quizo) |
| 266 | 268 | { |
| 267 | 269 | m_videoram=auto_alloc_array(machine(), UINT8, 0x4000*2); |
| 270 | membank("bank1")->configure_entries(0, 6, memregion("user1")->base(), 0x4000); |
| 271 | |
| 272 | save_pointer(NAME(m_videoram), 0x4000*2); |
| 273 | //save_item(NAME(m_port60)); |
| 274 | save_item(NAME(m_port70)); |
| 268 | 275 | } |
| 269 | 276 | |
| 270 | | GAME( 1985, quizo, 0, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 1)", 0 ) |
| 271 | | GAME( 1985, quizoa, quizo, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 2)", 0 ) |
| 277 | GAME( 1985, quizo, 0, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 1)", GAME_SUPPORTS_SAVE ) |
| 278 | GAME( 1985, quizoa, quizo, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 2)", GAME_SUPPORTS_SAVE ) |