trunk/src/mame/drivers/re900.c
| r245099 | r245100 | |
| 87 | 87 | public: |
| 88 | 88 | re900_state(const machine_config &mconfig, device_type type, const char *tag) |
| 89 | 89 | : driver_device(mconfig, type, tag), |
| 90 | | m_rom(*this, "rom"), |
| 91 | | m_maincpu(*this, "maincpu") { } |
| 90 | m_maincpu(*this, "maincpu"), |
| 91 | m_rom(*this, "rom") { } |
| 92 | 92 | |
| 93 | required_device<cpu_device> m_maincpu; |
| 94 | |
| 93 | 95 | required_shared_ptr<UINT8> m_rom; |
| 96 | |
| 97 | // re900 specific |
| 94 | 98 | UINT8 m_psg_pa; |
| 95 | 99 | UINT8 m_psg_pb; |
| 96 | 100 | UINT8 m_mux_data; |
| 97 | 101 | UINT8 m_ledant; |
| 98 | 102 | UINT8 m_player; |
| 99 | 103 | UINT8 m_stat_a; |
| 104 | |
| 105 | // common |
| 100 | 106 | DECLARE_READ8_MEMBER(rom_r); |
| 101 | 107 | DECLARE_WRITE8_MEMBER(cpu_port_0_w); |
| 102 | | DECLARE_WRITE8_MEMBER(re900_watchdog_reset_w); |
| 108 | DECLARE_WRITE8_MEMBER(watchdog_reset_w); |
| 109 | |
| 110 | // re900 specific |
| 103 | 111 | DECLARE_READ8_MEMBER(re_psg_portA_r); |
| 104 | 112 | DECLARE_READ8_MEMBER(re_psg_portB_r); |
| 105 | 113 | DECLARE_WRITE8_MEMBER(re_mux_port_A_w); |
| 106 | 114 | DECLARE_WRITE8_MEMBER(re_mux_port_B_w); |
| 107 | | DECLARE_WRITE_LINE_MEMBER(vdp_interrupt); |
| 115 | |
| 108 | 116 | DECLARE_DRIVER_INIT(re900); |
| 109 | | required_device<cpu_device> m_maincpu; |
| 110 | 117 | }; |
| 111 | 118 | |
| 112 | 119 | |
| r245099 | r245100 | |
| 219 | 226 | // output_set_lamp_value(8,1 ^ ( (data >> 5) & 1)); /* Cont. Ent */ |
| 220 | 227 | } |
| 221 | 228 | |
| 222 | | WRITE8_MEMBER(re900_state::re900_watchdog_reset_w) |
| 229 | WRITE8_MEMBER(re900_state::watchdog_reset_w) |
| 223 | 230 | { |
| 224 | 231 | //watchdog_reset_w(space,0,0); /* To do! */ |
| 225 | 232 | } |
| r245099 | r245100 | |
| 240 | 247 | AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("tms9128", tms9928a_device, register_write) |
| 241 | 248 | AM_RANGE(0xe800, 0xe801) AM_DEVWRITE("ay_re900", ay8910_device, address_data_w) |
| 242 | 249 | AM_RANGE(0xe802, 0xe802) AM_DEVREAD("ay_re900", ay8910_device, data_r) |
| 243 | | AM_RANGE(0xe000, 0xefff) AM_WRITE(re900_watchdog_reset_w) |
| 250 | AM_RANGE(0xe000, 0xefff) AM_WRITE(watchdog_reset_w) |
| 244 | 251 | AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_WRITE(cpu_port_0_w) |
| 245 | 252 | AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_NOP |
| 246 | 253 | AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_NOP |
| 247 | 254 | ADDRESS_MAP_END |
| 248 | 255 | |
| 249 | 256 | |
| 250 | | WRITE_LINE_MEMBER(re900_state::vdp_interrupt) |
| 251 | | { |
| 252 | | m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE ); |
| 253 | | } |
| 254 | | |
| 255 | | |
| 256 | 257 | /************************ |
| 257 | 258 | * Input ports * |
| 258 | 259 | ************************/ |
| r245099 | r245100 | |
| 380 | 381 | /* video hardware */ |
| 381 | 382 | MCFG_DEVICE_ADD( "tms9128", TMS9128, XTAL_10_738635MHz / 2 ) /* TMS9128NL on the board */ |
| 382 | 383 | MCFG_TMS9928A_VRAM_SIZE(0x4000) |
| 383 | | MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(re900_state, vdp_interrupt)) |
| 384 | MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) |
| 384 | 385 | MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) |
| 385 | 386 | MCFG_SCREEN_UPDATE_DEVICE( "tms9128", tms9128_device, screen_update ) |
| 386 | 387 | |
| r245099 | r245100 | |
| 431 | 432 | m_player = 1; |
| 432 | 433 | m_stat_a = 1; |
| 433 | 434 | m_psg_pa = m_psg_pb = m_mux_data = m_ledant = 0; |
| 435 | |
| 436 | save_item(NAME(m_psg_pa)); |
| 437 | save_item(NAME(m_psg_pb)); |
| 438 | save_item(NAME(m_mux_data)); |
| 439 | save_item(NAME(m_ledant)); |
| 440 | save_item(NAME(m_player)); |
| 441 | save_item(NAME(m_stat_a)); |
| 434 | 442 | } |
| 435 | 443 | |
| 436 | 444 | |
| r245099 | r245100 | |
| 439 | 447 | *************************/ |
| 440 | 448 | |
| 441 | 449 | /* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ |
| 442 | | GAMEL( 1993, re900, 0, re900, re900, re900_state, re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900", 0, layout_re900) |
| 443 | | GAME ( 1994, bs94 , 0, bs94, bs94 , re900_state, re900, ROT0, "Entretenimientos GEMINIS", "Buena Suerte '94", 0) |
| 450 | GAMEL( 1993, re900, 0, re900, re900, re900_state, re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900", GAME_SUPPORTS_SAVE, layout_re900) |
| 451 | GAME ( 1994, bs94 , 0, bs94, bs94 , driver_device, 0, ROT0, "Entretenimientos GEMINIS", "Buena Suerte '94", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/ssrj.c
| r245099 | r245100 | |
| 21 | 21 | f800 ?? |
| 22 | 22 | |
| 23 | 23 | Scroll RAM contains x and y offsets for each tileline, |
| 24 | | as well as other data (priroities ? additional flags ?) |
| 25 | | All moving obejcts (cars, etc) are displayed on tilemap 3. |
| 24 | as well as other data (priorities ? additional flags ?) |
| 25 | All moving objects (cars, etc) are displayed on tilemap 3. |
| 26 | 26 | |
| 27 | 27 | ------------------------------------ |
| 28 | 28 | Cheat : $e210 - timer |
| r245099 | r245100 | |
| 34 | 34 | #include "sound/ay8910.h" |
| 35 | 35 | #include "includes/ssrj.h" |
| 36 | 36 | |
| 37 | void ssrj_state::machine_start() |
| 38 | { |
| 39 | save_item(NAME(m_oldport)); |
| 40 | } |
| 41 | |
| 37 | 42 | void ssrj_state::machine_reset() |
| 38 | 43 | { |
| 39 | 44 | UINT8 *rom = memregion("maincpu")->base(); |
| r245099 | r245100 | |
| 42 | 47 | m_oldport = 0x80; |
| 43 | 48 | } |
| 44 | 49 | |
| 45 | | READ8_MEMBER(ssrj_state::ssrj_wheel_r) |
| 50 | READ8_MEMBER(ssrj_state::wheel_r) |
| 46 | 51 | { |
| 47 | 52 | int port = ioport("IN1")->read() - 0x80; |
| 48 | 53 | int retval = port - m_oldport; |
| r245099 | r245100 | |
| 53 | 58 | |
| 54 | 59 | static ADDRESS_MAP_START( ssrj_map, AS_PROGRAM, 8, ssrj_state ) |
| 55 | 60 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 56 | | AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(ssrj_vram1_w) AM_SHARE("vram1") |
| 57 | | AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(ssrj_vram2_w) AM_SHARE("vram2") |
| 61 | AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram1_w) AM_SHARE("vram1") |
| 62 | AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vram2_w) AM_SHARE("vram2") |
| 58 | 63 | AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("vram3") |
| 59 | | AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(ssrj_vram4_w) AM_SHARE("vram4") |
| 64 | AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(vram4_w) AM_SHARE("vram4") |
| 60 | 65 | AM_RANGE(0xe000, 0xe7ff) AM_RAM |
| 61 | 66 | AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("scrollram") |
| 62 | 67 | AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN0") |
| 63 | | AM_RANGE(0xf001, 0xf001) AM_READ(ssrj_wheel_r) |
| 68 | AM_RANGE(0xf001, 0xf001) AM_READ(wheel_r) |
| 64 | 69 | AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN2") |
| 65 | 70 | AM_RANGE(0xf003, 0xf003) AM_WRITENOP /* unknown */ |
| 66 | 71 | AM_RANGE(0xf401, 0xf401) AM_DEVREAD("aysnd", ay8910_device, data_r) |
| r245099 | r245100 | |
| 141 | 146 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 142 | 147 | MCFG_SCREEN_SIZE(40*8, 32*8) |
| 143 | 148 | MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 1*8, 31*8-1) // unknown res |
| 144 | | MCFG_SCREEN_UPDATE_DRIVER(ssrj_state, screen_update_ssrj) |
| 145 | | MCFG_SCREEN_VBLANK_DRIVER(ssrj_state, screen_eof_ssrj) |
| 149 | MCFG_SCREEN_UPDATE_DRIVER(ssrj_state, screen_update) |
| 150 | MCFG_SCREEN_VBLANK_DRIVER(ssrj_state, screen_eof) |
| 146 | 151 | MCFG_SCREEN_PALETTE("palette") |
| 147 | 152 | |
| 148 | 153 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", ssrj) |
| r245099 | r245100 | |
| 179 | 184 | |
| 180 | 185 | ROM_END |
| 181 | 186 | |
| 182 | | GAME( 1985, ssrj, 0, ssrj, ssrj, driver_device, 0, ROT90, "Taito Corporation", "Super Speed Race Junior (Japan)",GAME_WRONG_COLORS|GAME_IMPERFECT_GRAPHICS ) |
| 187 | GAME( 1985, ssrj, 0, ssrj, ssrj, driver_device, 0, ROT90, "Taito Corporation", "Super Speed Race Junior (Japan)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/sstrangr.c
| r245099 | r245100 | |
| 18 | 18 | public: |
| 19 | 19 | sstrangr_state(const machine_config &mconfig, device_type type, const char *tag) |
| 20 | 20 | : driver_device(mconfig, type, tag), |
| 21 | | m_ram(*this, "ram"), |
| 22 | | m_maincpu(*this, "maincpu") { } |
| 21 | m_maincpu(*this, "maincpu"), |
| 22 | m_ram(*this, "ram") { } |
| 23 | 23 | |
| 24 | required_device<cpu_device> m_maincpu; |
| 25 | |
| 24 | 26 | required_shared_ptr<UINT8> m_ram; |
| 27 | |
| 25 | 28 | UINT8 m_flip_screen; |
| 26 | | UINT8 *m_proms; |
| 29 | |
| 27 | 30 | DECLARE_WRITE8_MEMBER(port_w); |
| 31 | |
| 32 | virtual void video_start(); |
| 33 | |
| 28 | 34 | UINT32 screen_update_sstrangr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 29 | 35 | UINT32 screen_update_sstrngr2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 30 | | required_device<cpu_device> m_maincpu; |
| 31 | 36 | }; |
| 32 | 37 | |
| 33 | 38 | |
| r245099 | r245100 | |
| 38 | 43 | * |
| 39 | 44 | *************************************/ |
| 40 | 45 | |
| 46 | void sstrangr_state::video_start() |
| 47 | { |
| 48 | save_item(NAME(m_flip_screen)); |
| 49 | } |
| 50 | |
| 41 | 51 | UINT32 sstrangr_state::screen_update_sstrangr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 42 | 52 | { |
| 43 | 53 | offs_t offs; |
| r245099 | r245100 | |
| 296 | 306 | ROM_END |
| 297 | 307 | |
| 298 | 308 | |
| 299 | | GAMEL( 1978, sstrangr, 0, sstrangr, sstrangr, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger", GAME_NO_SOUND, layout_sstrangr ) |
| 300 | | GAME( 1979, sstrangr2,sstrangr, sstrngr2, sstrngr2, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger 2", GAME_NO_SOUND ) |
| 309 | GAMEL( 1978, sstrangr, 0, sstrangr, sstrangr, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_sstrangr ) |
| 310 | GAME( 1979, sstrangr2,sstrangr, sstrngr2, sstrngr2, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger 2", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/ssrj.h
| r245099 | r245100 | |
| 3 | 3 | public: |
| 4 | 4 | ssrj_state(const machine_config &mconfig, device_type type, const char *tag) |
| 5 | 5 | : driver_device(mconfig, type, tag), |
| 6 | m_maincpu(*this, "maincpu"), |
| 7 | m_gfxdecode(*this, "gfxdecode"), |
| 8 | m_palette(*this, "palette"), |
| 6 | 9 | m_vram1(*this, "vram1"), |
| 7 | 10 | m_vram2(*this, "vram2"), |
| 8 | 11 | m_vram3(*this, "vram3"), |
| 9 | 12 | m_vram4(*this, "vram4"), |
| 10 | | m_scrollram(*this, "scrollram"), |
| 11 | | m_maincpu(*this, "maincpu"), |
| 12 | | m_gfxdecode(*this, "gfxdecode"), |
| 13 | | m_palette(*this, "palette") { } |
| 13 | m_scrollram(*this, "scrollram") { } |
| 14 | 14 | |
| 15 | | int m_oldport; |
| 16 | | tilemap_t *m_tilemap1; |
| 17 | | tilemap_t *m_tilemap2; |
| 18 | | tilemap_t *m_tilemap4; |
| 15 | required_device<cpu_device> m_maincpu; |
| 16 | required_device<gfxdecode_device> m_gfxdecode; |
| 17 | required_device<palette_device> m_palette; |
| 18 | |
| 19 | 19 | required_shared_ptr<UINT8> m_vram1; |
| 20 | 20 | required_shared_ptr<UINT8> m_vram2; |
| 21 | 21 | required_shared_ptr<UINT8> m_vram3; |
| 22 | 22 | required_shared_ptr<UINT8> m_vram4; |
| 23 | 23 | required_shared_ptr<UINT8> m_scrollram; |
| 24 | |
| 25 | int m_oldport; |
| 26 | tilemap_t *m_tilemap1; |
| 27 | tilemap_t *m_tilemap2; |
| 28 | tilemap_t *m_tilemap4; |
| 24 | 29 | UINT8 *m_buffer_spriteram; |
| 25 | | DECLARE_READ8_MEMBER(ssrj_wheel_r); |
| 26 | | DECLARE_WRITE8_MEMBER(ssrj_vram1_w); |
| 27 | | DECLARE_WRITE8_MEMBER(ssrj_vram2_w); |
| 28 | | DECLARE_WRITE8_MEMBER(ssrj_vram4_w); |
| 30 | |
| 31 | DECLARE_READ8_MEMBER(wheel_r); |
| 32 | DECLARE_WRITE8_MEMBER(vram1_w); |
| 33 | DECLARE_WRITE8_MEMBER(vram2_w); |
| 34 | DECLARE_WRITE8_MEMBER(vram4_w); |
| 35 | |
| 29 | 36 | TILE_GET_INFO_MEMBER(get_tile_info1); |
| 30 | 37 | TILE_GET_INFO_MEMBER(get_tile_info2); |
| 31 | 38 | TILE_GET_INFO_MEMBER(get_tile_info4); |
| 39 | |
| 40 | virtual void machine_start(); |
| 32 | 41 | virtual void machine_reset(); |
| 33 | 42 | virtual void video_start(); |
| 34 | 43 | DECLARE_PALETTE_INIT(ssrj); |
| 35 | | UINT32 screen_update_ssrj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 36 | | void screen_eof_ssrj(screen_device &screen, bool state); |
| 44 | |
| 45 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 46 | void screen_eof(screen_device &screen, bool state); |
| 37 | 47 | void draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect ); |
| 38 | | required_device<cpu_device> m_maincpu; |
| 39 | | required_device<gfxdecode_device> m_gfxdecode; |
| 40 | | required_device<palette_device> m_palette; |
| 41 | 48 | }; |
trunk/src/mame/video/ssrj.c
| r245099 | r245100 | |
| 3 | 3 | |
| 4 | 4 | /* tilemap 1 */ |
| 5 | 5 | |
| 6 | | WRITE8_MEMBER(ssrj_state::ssrj_vram1_w) |
| 6 | WRITE8_MEMBER(ssrj_state::vram1_w) |
| 7 | 7 | { |
| 8 | 8 | m_vram1[offset] = data; |
| 9 | 9 | m_tilemap1->mark_tile_dirty(offset>>1); |
| r245099 | r245100 | |
| 21 | 21 | |
| 22 | 22 | /* tilemap 2 */ |
| 23 | 23 | |
| 24 | | WRITE8_MEMBER(ssrj_state::ssrj_vram2_w) |
| 24 | WRITE8_MEMBER(ssrj_state::vram2_w) |
| 25 | 25 | { |
| 26 | 26 | m_vram2[offset] = data; |
| 27 | 27 | m_tilemap2->mark_tile_dirty(offset>>1); |
| r245099 | r245100 | |
| 39 | 39 | |
| 40 | 40 | /* tilemap 4 */ |
| 41 | 41 | |
| 42 | | WRITE8_MEMBER(ssrj_state::ssrj_vram4_w) |
| 42 | WRITE8_MEMBER(ssrj_state::vram4_w) |
| 43 | 43 | { |
| 44 | 44 | m_vram4[offset] = data; |
| 45 | 45 | m_tilemap4->mark_tile_dirty(offset>>1); |
| r245099 | r245100 | |
| 60 | 60 | TODO: This table is nowhere near as accurate. If you bother, here's how colors should be: |
| 61 | 61 | -"START" sign is red with dark blue background. |
| 62 | 62 | -Sidewalk is yellow-ish. |
| 63 | | -first opponents have swapped colors (blue/yellow ?nstead of yellow/blue) |
| 63 | -first opponents have swapped colors (blue/yellow instead of yellow/blue) |
| 64 | 64 | -after the first stage, houses have red/white colors. |
| 65 | 65 | */ |
| 66 | 66 | |
| r245099 | r245100 | |
| 270 | 270 | palette.set_pen_color(i*8+j, fakecols[i][j][0], fakecols[i][j][1], fakecols[i][j][2]); |
| 271 | 271 | } |
| 272 | 272 | |
| 273 | | UINT32 ssrj_state::screen_update_ssrj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 273 | UINT32 ssrj_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 274 | 274 | { |
| 275 | 275 | m_tilemap1->set_scrollx(0, 0xff-m_scrollram[2] ); |
| 276 | 276 | m_tilemap1->set_scrolly(0, m_scrollram[0] ); |
| r245099 | r245100 | |
| 282 | 282 | return 0; |
| 283 | 283 | } |
| 284 | 284 | |
| 285 | | void ssrj_state::screen_eof_ssrj(screen_device &screen, bool state) |
| 285 | void ssrj_state::screen_eof(screen_device &screen, bool state) |
| 286 | 286 | { |
| 287 | 287 | // rising edge |
| 288 | 288 | if (state) |