diff options
Diffstat (limited to 'src/mess/drivers/a2600.c')
-rw-r--r-- | src/mess/drivers/a2600.c | 134 |
1 files changed, 67 insertions, 67 deletions
diff --git a/src/mess/drivers/a2600.c b/src/mess/drivers/a2600.c index 2b090693964..182a85c5519 100644 --- a/src/mess/drivers/a2600.c +++ b/src/mess/drivers/a2600.c @@ -20,28 +20,28 @@ TODO: #include "machine/vcsctrl.h" #include "hashfile.h" -#define CONTROL1_TAG "joyport1" -#define CONTROL2_TAG "joyport2" +#define CONTROL1_TAG "joyport1" +#define CONTROL2_TAG "joyport2" struct df_t { - UINT8 top; - UINT8 bottom; - UINT8 low; - UINT8 high; - UINT8 flag; - UINT8 music_mode; /* Only used by data fetchers 5,6, and 7 */ - UINT8 osc_clk; /* Only used by data fetchers 5,6, and 7 */ + UINT8 top; + UINT8 bottom; + UINT8 low; + UINT8 high; + UINT8 flag; + UINT8 music_mode; /* Only used by data fetchers 5,6, and 7 */ + UINT8 osc_clk; /* Only used by data fetchers 5,6, and 7 */ }; struct dpc_t { df_t df[8]; - UINT8 movamt; - UINT8 latch_62; - UINT8 latch_64; - UINT8 dlc; - UINT8 shift_reg; - emu_timer *oscillator; + UINT8 movamt; + UINT8 latch_62; + UINT8 latch_64; + UINT8 dlc; + UINT8 shift_reg; + emu_timer *oscillator; }; @@ -150,7 +150,7 @@ protected: void modeFE_switch(UINT16 offset, UINT8 data); void install_banks(int count, unsigned init); - UINT8 *m_cart; + UINT8 *m_cart; }; @@ -158,9 +158,9 @@ protected: #define CART machine.root_device().memregion("user1")->base() #define CART_MEMBER machine().root_device().memregion("user1")->base() -#define MASTER_CLOCK_NTSC 3579545 -#define MASTER_CLOCK_PAL 3546894 -#define CATEGORY_SELECT 16 +#define MASTER_CLOCK_NTSC 3579545 +#define MASTER_CLOCK_PAL 3546894 +#define CATEGORY_SELECT 16 enum { @@ -1063,7 +1063,7 @@ DIRECT_UPDATE_MEMBER(a2600_state::modeDPC_opbase_handler) { if ( ! direct.space().debugger_access() ) { - UINT8 new_bit; + UINT8 new_bit; new_bit = ( m_dpc.shift_reg & 0x80 ) ^ ( ( m_dpc.shift_reg & 0x20 ) << 2 ); new_bit = new_bit ^ ( ( ( m_dpc.shift_reg & 0x10 ) << 3 ) ^ ( ( m_dpc.shift_reg & 0x08 ) << 4 ) ); new_bit = new_bit ^ 0x80; @@ -1075,20 +1075,20 @@ DIRECT_UPDATE_MEMBER(a2600_state::modeDPC_opbase_handler) READ8_MEMBER(a2600_state::modeDPC_r) { static const UINT8 dpc_amplitude[8] = { 0x00, 0x04, 0x05, 0x09, 0x06, 0x0A, 0x0B, 0x0F }; - UINT8 data_fetcher = offset & 0x07; - UINT8 data = 0xFF; + UINT8 data_fetcher = offset & 0x07; + UINT8 data = 0xFF; logerror("%04X: Read from DPC offset $%02X\n", machine().device("maincpu")->safe_pc(), offset); if ( offset < 0x08 ) { switch( offset & 0x06 ) { - case 0x00: /* Random number generator */ + case 0x00: /* Random number generator */ case 0x02: return m_dpc.shift_reg; - case 0x04: /* Sound value, MOVAMT value AND'd with Draw Line Carry; with Draw Line Add */ + case 0x04: /* Sound value, MOVAMT value AND'd with Draw Line Carry; with Draw Line Add */ m_dpc.latch_62 = m_dpc.latch_64; - case 0x06: /* Sound value, MOVAMT value AND'd with Draw Line Carry; without Draw Line Add */ + case 0x06: /* Sound value, MOVAMT value AND'd with Draw Line Carry; without Draw Line Add */ m_dpc.latch_64 = m_dpc.latch_62 + m_dpc.df[4].top; m_dpc.dlc = ( m_dpc.latch_62 + m_dpc.df[4].top > 0xFF ) ? 1 : 0; data = 0; @@ -1109,29 +1109,29 @@ READ8_MEMBER(a2600_state::modeDPC_r) } else { - UINT8 display_data = memregion("user1")->base()[0x2000 + ( ~ ( ( m_dpc.df[data_fetcher].low | ( m_dpc.df[data_fetcher].high << 8 ) ) ) & 0x7FF ) ]; + UINT8 display_data = memregion("user1")->base()[0x2000 + ( ~ ( ( m_dpc.df[data_fetcher].low | ( m_dpc.df[data_fetcher].high << 8 ) ) ) & 0x7FF ) ]; switch( offset & 0x38 ) { - case 0x08: /* display data */ + case 0x08: /* display data */ data = display_data; break; - case 0x10: /* display data AND'd w/flag */ + case 0x10: /* display data AND'd w/flag */ data = m_dpc.df[data_fetcher].flag ? display_data : 0x00; break; - case 0x18: /* display data AND'd w/flag, nibbles swapped */ + case 0x18: /* display data AND'd w/flag, nibbles swapped */ data = m_dpc.df[data_fetcher].flag ? BITSWAP8(display_data,3,2,1,0,7,6,5,4) : 0x00; break; - case 0x20: /* display data AND'd w/flag, byte reversed */ + case 0x20: /* display data AND'd w/flag, byte reversed */ data = m_dpc.df[data_fetcher].flag ? BITSWAP8(display_data,0,1,2,3,4,5,6,7) : 0x00; break; - case 0x28: /* display data AND'd w/flag, rotated right */ + case 0x28: /* display data AND'd w/flag, rotated right */ data = m_dpc.df[data_fetcher].flag ? ( display_data >> 1 ) : 0x00; break; - case 0x30: /* display data AND'd w/flag, rotated left */ + case 0x30: /* display data AND'd w/flag, rotated left */ data = m_dpc.df[data_fetcher].flag ? ( display_data << 1 ) : 0x00; break; - case 0x38: /* flag */ + case 0x38: /* flag */ data = m_dpc.df[data_fetcher].flag ? 0xFF : 0x00; break; } @@ -1146,20 +1146,20 @@ READ8_MEMBER(a2600_state::modeDPC_r) WRITE8_MEMBER(a2600_state::modeDPC_w) { - UINT8 data_fetcher = offset & 0x07; + UINT8 data_fetcher = offset & 0x07; switch( offset & 0x38 ) { - case 0x00: /* Top count */ + case 0x00: /* Top count */ m_dpc.df[data_fetcher].top = data; m_dpc.df[data_fetcher].flag = 0; modeDPC_check_flag(data_fetcher ); break; - case 0x08: /* Bottom count */ + case 0x08: /* Bottom count */ m_dpc.df[data_fetcher].bottom = data; modeDPC_check_flag(data_fetcher ); break; - case 0x10: /* Counter low */ + case 0x10: /* Counter low */ m_dpc.df[data_fetcher].low = data; if ( data_fetcher == 4 ) { @@ -1171,7 +1171,7 @@ WRITE8_MEMBER(a2600_state::modeDPC_w) } modeDPC_check_flag(data_fetcher ); break; - case 0x18: /* Counter high */ + case 0x18: /* Counter high */ m_dpc.df[data_fetcher].high = data; m_dpc.df[data_fetcher].music_mode = data & 0x10; m_dpc.df[data_fetcher].osc_clk = data & 0x20; @@ -1181,16 +1181,16 @@ WRITE8_MEMBER(a2600_state::modeDPC_w) modeDPC_check_flag(data_fetcher ); } break; - case 0x20: /* Draw line movement value / MOVAMT */ + case 0x20: /* Draw line movement value / MOVAMT */ m_dpc.movamt = data; break; - case 0x28: /* Not used */ + case 0x28: /* Not used */ logerror("%04X: Write to unused DPC register $%02X, data $%02X\n", machine().device("maincpu")->safe_pc(), offset, data); break; - case 0x30: /* Random number generator reset */ + case 0x30: /* Random number generator reset */ m_dpc.shift_reg = 0; break; - case 0x38: /* Not used */ + case 0x38: /* Not used */ logerror("%04X: Write to unused DPC register $%02X, data $%02X\n", machine().device("maincpu")->safe_pc(), offset, data); break; } @@ -1212,8 +1212,8 @@ depending on last byte & 0x20 -> 0x00 -> switch to bank #1 DIRECT_UPDATE_MEMBER(a2600_state::modeFE_opbase_handler) { /* Still cheating a bit here by looking bit 13 of the address..., but the high byte of the - cpu should be the last byte that was on the data bus and so should determine the bank - we should switch in. */ + cpu should be the last byte that was on the data bus and so should determine the bank + we should switch in. */ m_bank_base[1] = memregion("user1")->base() + 0x1000 * ( ( machine().device("maincpu")->safe_pc() & 0x2000 ) ? 0 : 1 ); membank("bank1")->set_base(m_bank_base[1] ); /* and restore old opbase handler */ @@ -1225,8 +1225,8 @@ void a2600_state::modeFE_switch(UINT16 offset, UINT8 data) { address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM); /* Retrieve last byte read by the cpu (for this mapping scheme this - should be the last byte that was on the data bus - */ + should be the last byte that was on the data bus + */ m_FE_old_opbase_handler = space.set_direct_update_handler(direct_update_delegate(FUNC(a2600_state::modeFE_opbase_handler), this)); } @@ -1340,22 +1340,22 @@ READ16_MEMBER(a2600_state::a2600_read_input_port) { switch( offset ) { - case 0: /* Left controller port PIN 5 */ + case 0: /* Left controller port PIN 5 */ return m_joy1->pot_x_r(); - case 1: /* Left controller port PIN 9 */ + case 1: /* Left controller port PIN 9 */ return m_joy1->pot_y_r(); - case 2: /* Right controller port PIN 5 */ + case 2: /* Right controller port PIN 5 */ return m_joy2->pot_x_r(); - case 3: /* Right controller port PIN 9 */ + case 3: /* Right controller port PIN 9 */ return m_joy2->pot_y_r(); - case 4: /* Left controller port PIN 6 */ + case 4: /* Left controller port PIN 6 */ return ( m_joy1->joy_r() & 0x20 ) ? 0xff : 0x7f; - case 5: /* Right controller port PIN 6 */ + case 5: /* Right controller port PIN 6 */ return ( m_joy2->joy_r() & 0x20 ) ? 0xff : 0x7f; } return 0xff; @@ -1372,8 +1372,8 @@ READ16_MEMBER(a2600_state::a2600_read_input_port) */ READ8_MEMBER(a2600_state::a2600_get_databus_contents) { - UINT16 last_address, prev_address; - UINT8 last_byte, prev_byte; + UINT16 last_address, prev_address; + UINT8 last_byte, prev_byte; address_space& prog_space = machine().device("maincpu")->memory().space(AS_PROGRAM); last_address = machine().device("maincpu")->safe_pc() - 1; @@ -1393,7 +1393,7 @@ READ8_MEMBER(a2600_state::a2600_get_databus_contents) } prev_byte = prog_space.read_byte(prev_address ); if ( prev_byte == 0xB1 ) - { /* LDA (XX),Y */ + { /* LDA (XX),Y */ return prog_space.read_byte(last_byte + 1 ); } return last_byte; @@ -1401,10 +1401,10 @@ READ8_MEMBER(a2600_state::a2600_get_databus_contents) #if 0 static const rectangle visarea[4] = { - { 26, 26 + 160 + 16, 24, 24 + 192 + 31 }, /* 262 */ - { 26, 26 + 160 + 16, 32, 32 + 228 + 31 }, /* 312 */ - { 26, 26 + 160 + 16, 45, 45 + 240 + 31 }, /* 328 */ - { 26, 26 + 160 + 16, 48, 48 + 240 + 31 } /* 342 */ + { 26, 26 + 160 + 16, 24, 24 + 192 + 31 }, /* 262 */ + { 26, 26 + 160 + 16, 32, 32 + 228 + 31 }, /* 312 */ + { 26, 26 + 160 + 16, 45, 45 + 240 + 31 }, /* 328 */ + { 26, 26 + 160 + 16, 48, 48 + 240 + 31 } /* 342 */ }; #endif @@ -1618,10 +1618,10 @@ void a2600_state::machine_reset() } /* Super chip games: - dig dig, crystal castles, millipede, stargate, defender ii, jr. Pac Man, - desert falcon, dark chambers, super football, sprintmaster, fatal run, - off the wall, shooting arcade, secret quest, radar lock, save mary, klax - */ + dig dig, crystal castles, millipede, stargate, defender ii, jr. Pac Man, + desert falcon, dark chambers, super football, sprintmaster, fatal run, + off the wall, shooting arcade, secret quest, radar lock, save mary, klax + */ /* set up ROM banks */ @@ -1837,7 +1837,7 @@ void a2600_state::machine_reset() space.install_read_handler(0x1ff8, 0x1ff9, read8_delegate(FUNC(a2600_state::modeF8_switch_r),this)); space.set_direct_update_handler(direct_update_delegate(FUNC(a2600_state::modeDPC_opbase_handler), this)); { - int data_fetcher; + int data_fetcher; for( data_fetcher = 0; data_fetcher < 8; data_fetcher++ ) { m_dpc.df[data_fetcher].osc_clk = 0; @@ -1933,7 +1933,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( a2600, a2600_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK_NTSC / 3) /* actually M6507 */ + MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK_NTSC / 3) /* actually M6507 */ MCFG_M6502_DISABLE_DIRECT() MCFG_CPU_PROGRAM_MAP(a2600_mem) @@ -2015,5 +2015,5 @@ ROM_END #define rom_a2600p rom_a2600 /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1977, a2600, 0, 0, a2600, a2600, driver_device, 0, "Atari", "Atari 2600 (NTSC)" , 0) -CONS( 1978, a2600p, a2600, 0, a2600p, a2600, driver_device, 0, "Atari", "Atari 2600 (PAL)", 0) +CONS( 1977, a2600, 0, 0, a2600, a2600, driver_device, 0, "Atari", "Atari 2600 (NTSC)" , 0) +CONS( 1978, a2600p, a2600, 0, a2600p, a2600, driver_device, 0, "Atari", "Atari 2600 (PAL)", 0) |