summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-09-02 22:47:55 +0200
committer hap <happppp@users.noreply.github.com>2021-09-02 22:48:11 +0200
commit26db143614adfc77b35583bc757cecf20281c110 (patch)
tree72cff89fe0198e008d5b1847698e67701b141296
parent8f06891446230d6ba44719ce069d6ecb8c5c7e6d (diff)
n8080: move pcb notes to top of driver
-rw-r--r--src/mame/drivers/n8080.cpp281
1 files changed, 146 insertions, 135 deletions
diff --git a/src/mame/drivers/n8080.cpp b/src/mame/drivers/n8080.cpp
index f7d22494178..46987b17dd6 100644
--- a/src/mame/drivers/n8080.cpp
+++ b/src/mame/drivers/n8080.cpp
@@ -4,19 +4,136 @@
Nintendo 8080 hardware
- - Space Fever
- - Space Fever High Splitter (aka SF-Hisplitter)
- - Space Launcher
- - Sheriff / Bandido / Western Gun 2
- - Helifire
+- Space Fever
+- Space Fever High Splitter (aka SF-Hisplitter)
+- Space Launcher
+- Sheriff / Bandido / Western Gun 2
+- Helifire
+
+TODO:
+- space fever original hw is monochrome
+
+----------------------------------------------------------------------------
+
+Space Fever (3 sets, Space Fever?, High Splitter?, Space Launcher?)
+Nintendo, 1979
+
+Note: These are all simple ROM swaps on a standard b/w Space Fever PCB.
+
+
+PCB Layouts
+-----------
+
+Top Board (Sound PCB)
+
+TSF-SOU
+|----------------------------------------------------|
+| VR3 VR2 VR1 |
+| 8035 74123 |
+| 74275 |
+| 6MHz |
+| 74123 SN76477 |
+| SF_SOUND.IC2 74275 |
+| |
+| 7405 |
+| |
+|----------------------------------------------------|
+Notes:
+ All IC's shown.
+ There is no AMP on the PCB, sound amplification is done via a small external AMP board.
+ ROM IC2 is a 2708 EPROM.
+ VR1: master volume
+ VR2: shoot volume
+ VR3: music volume
+ 8035 clocks: pins 2 and 3 measure 6.000MHz
+ pin 9 measures 399.256kHz
+ pin 12 measures 200.0kHz
+ pin 13 measures 105.0kHz
+ pin 21 measures 399.4Khz
+ pin 22 measures 400.0kHz
+ pin 23 measures 399.3kHz
+ pin 24 measures 399.3kHz
+ pin 39 measures 61.5627Hz
+
+
+Middle board
+------------
+
+TSF-I/O PI-500803
+|----------------------------------------------------|
+| |
+| VR1 |
+| 20.160MHz |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| DSW1(8) |
+| |
+| |
+| |
+| |
+| |
+|----------------------------------------------------|
+Notes:
+ VR1: adjusts brightness
+ Board contains mostly logic ICs (not shown)
+ Video output is b/w, the harness is wired to a JAMMA fingerboard but only blue is used.
+
+
+Bottom board
+------------
+
+TSF-CPU PI-500802
+|----------------------------------------------------|
+| |
+| |
+| |
+| SF_F1.F1 SF_G1.G1 SF_H1.H1 SF_I1.I1 |
+| |
+| 8080 |
+| |
+| SF_F2.F2 SF_G2.G2 SF_H2.H2 SF_I2.I2 |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| 4116 4116 4116 4116 4116 4116 4116 4116 |
+|----------------------------------------------------|
+Notes:
+ All ROMs are 2708, 1K x8
+ 4116: 2K x8 DRAM
+ 8080 clock: 2.0160MHz (20.160 / 10)
+ Sync: no V reading, H is 15.57kHz
+
+ Set 1 is on the PCB and is complete.
+ Some ROMs in set1 match the current sfeverbw set.
+
+ The other two sets were supplied as just EPROMs.
+ Set2 (maybe High Splitter) is missing the ROM at location I2. Might be missing, or maybe
+ just the program is smaller and the extra ROM was not required.
***************************************************************************/
#include "emu.h"
#include "includes/n8080.h"
-#define MASTER_CLOCK XTAL(20'160'000)
+// Shifter circuit done with TTL
void n8080_state::n8080_shift_bits_w(uint8_t data)
{
@@ -28,12 +145,12 @@ void n8080_state::n8080_shift_data_w(uint8_t data)
m_shift_data = (m_shift_data >> 8) | (data << 8);
}
-
uint8_t n8080_state::n8080_shift_r()
{
return m_shift_data >> (8 - m_shift_bits);
}
+
void n8080_state::main_cpu_map(address_map &map)
{
map.global_mask(0x7fff);
@@ -41,7 +158,6 @@ void n8080_state::main_cpu_map(address_map &map)
map(0x4000, 0x7fff).ram().share("videoram");
}
-
void helifire_state::main_cpu_map(address_map &map)
{
map(0x0000, 0x3fff).rom();
@@ -66,7 +182,7 @@ void n8080_state::main_io_map(address_map &map)
}
-/* Input ports */
+// Input ports
static INPUT_PORTS_START( spacefev )
PORT_START("IN0")
@@ -431,13 +547,13 @@ static INPUT_PORTS_START( helifire )
INPUT_PORTS_END
-/* Interrupts */
+// Interrupts
TIMER_DEVICE_CALLBACK_MEMBER(n8080_state::rst1_tick)
{
int state = m_inte ? ASSERT_LINE : CLEAR_LINE;
- /* V7 = 1, V6 = 0 */
+ // V7 = 1, V6 = 0
m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, state, 0xcf); // I8080
}
@@ -445,7 +561,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(n8080_state::rst2_tick)
{
int state = m_inte ? ASSERT_LINE : CLEAR_LINE;
- /* vblank */
+ // vblank
m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, state, 0xd7); // I8080
}
@@ -458,11 +574,14 @@ void n8080_state::n8080_status_callback(uint8_t data)
{
if (data & i8080_cpu_device::STATUS_INTA)
{
- /* interrupt acknowledge */
+ // interrupt acknowledge
m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
}
}
+
+// Machine start/reset
+
void n8080_state::machine_start()
{
save_item(NAME(m_shift_data));
@@ -503,10 +622,12 @@ void helifire_state::machine_reset()
}
+// Machine configs
+
void spacefev_state::spacefev(machine_config &config)
{
/* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK / 10);
+ I8080(config, m_maincpu, XTAL(20'160'000) / 10);
m_maincpu->out_status_func().set(FUNC(spacefev_state::n8080_status_callback));
m_maincpu->out_inte_func().set(FUNC(spacefev_state::n8080_inte_callback));
m_maincpu->set_addrmap(AS_PROGRAM, &spacefev_state::main_cpu_map);
@@ -529,11 +650,10 @@ void spacefev_state::spacefev(machine_config &config)
spacefev_sound(config);
}
-
void sheriff_state::sheriff(machine_config &config)
{
/* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK / 10);
+ I8080(config, m_maincpu, XTAL(20'160'000) / 10);
m_maincpu->out_status_func().set(FUNC(sheriff_state::n8080_status_callback));
m_maincpu->out_inte_func().set(FUNC(sheriff_state::n8080_inte_callback));
m_maincpu->set_addrmap(AS_PROGRAM, &sheriff_state::main_cpu_map);
@@ -571,7 +691,7 @@ void sheriff_state::westgun2(machine_config &config)
void helifire_state::helifire(machine_config &config)
{
/* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK / 10);
+ I8080(config, m_maincpu, XTAL(20'160'000) / 10);
m_maincpu->out_status_func().set(FUNC(helifire_state::n8080_status_callback));
m_maincpu->out_inte_func().set(FUNC(helifire_state::n8080_inte_callback));
m_maincpu->set_addrmap(AS_PROGRAM, &helifire_state::main_cpu_map);
@@ -596,119 +716,7 @@ void helifire_state::helifire(machine_config &config)
}
-/*
-Space Fever (3 sets, Space Fever?, High Splitter?, Space Launcher?)
-Nintendo, 1979
-
-Note: These are all simple ROM swaps on a standard b/w Space Fever PCB.
-
-
-PCB Layouts
------------
-
-Top Board (Sound PCB)
-
-TSF-SOU
-|----------------------------------------------------|
-| VR3 VR2 VR1 |
-| 8035 74123 |
-| 74275 |
-| 6MHz |
-| 74123 SN76477 |
-| SF_SOUND.IC2 74275 |
-| |
-| 7405 |
-| |
-|----------------------------------------------------|
-Notes:
- All IC's shown.
- There is no AMP on the PCB, sound amplification is done via a small external AMP board.
- ROM IC2 is a 2708 EPROM.
- VR1: master volume
- VR2: shoot volume
- VR3: music volume
- 8035 clocks: pins 2 and 3 measure 6.000MHz
- pin 9 measures 399.256kHz
- pin 12 measures 200.0kHz
- pin 13 measures 105.0kHz
- pin 21 measures 399.4Khz
- pin 22 measures 400.0kHz
- pin 23 measures 399.3kHz
- pin 24 measures 399.3kHz
- pin 39 measures 61.5627Hz
-
-
-Middle board
-------------
-
-TSF-I/O PI-500803
-|----------------------------------------------------|
-| |
-| VR1 |
-| 20.160MHz |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| DSW1(8) |
-| |
-| |
-| |
-| |
-| |
-|----------------------------------------------------|
-Notes:
- VR1: adjusts brightness
- Board contains mostly logic ICs (not shown)
- Video output is b/w, the harness is wired to a JAMMA fingerboard but only blue is used.
-
-
-Bottom board
-------------
-
-TSF-CPU PI-500802
-|----------------------------------------------------|
-| |
-| |
-| |
-| SF_F1.F1 SF_G1.G1 SF_H1.H1 SF_I1.I1 |
-| |
-| 8080 |
-| |
-| SF_F2.F2 SF_G2.G2 SF_H2.H2 SF_I2.I2 |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-| 4116 4116 4116 4116 4116 4116 4116 4116 |
-|----------------------------------------------------|
-Notes:
- All ROMs are 2708, 1K x8
- 4116: 2K x8 DRAM
- 8080 clock: 2.0160MHz (20.160 / 10)
- Sync: no V reading, H is 15.57kHz
-
- Set 1 is on the PCB and is complete.
- Some ROMs in set1 match the current sfeverbw set.
-
- The other two sets were supplied as just EPROMs.
- Set2 (maybe High Splitter) is missing the ROM at location I2. Might be missing, or maybe
- just the program is smaller and the extra ROM was not required.
-*/
+// ROM definitions
ROM_START( spacefev )
ROM_REGION( 0x8000, "maincpu", 0 )
@@ -922,15 +930,18 @@ ROM_START( helifirea )
ROM_END
-GAME( 1979, spacefev, 0, spacefev, spacefev, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever (New Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1979, spacefevo, spacefev, spacefev, spacefev, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever (Old Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever (Older Ver.)", MACHINE_SUPPORTS_SAVE )
+// YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, MONITOR, COMPANY, FULLNAME, FLAGS
+GAME( 1979, spacefev, 0, spacefev, spacefev, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever (new version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, spacefevo, spacefev, spacefev, spacefev, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever (old version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever (older version)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, highsplt, 0, spacefev, highsplt, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer
-GAME( 1979, highsplta, highsplt, spacefev, highsplt, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer
-GAME( 1979, highspltb, highsplt, spacefev, highsplt, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer
+GAME( 1979, highsplta, highsplt, spacefev, highsplt, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", MACHINE_SUPPORTS_SAVE ) // "
+GAME( 1979, highspltb, highsplt, spacefev, highsplt, spacefev_state, empty_init, ROT270, "Nintendo", "Space Fever High Splitter (alt sound)", MACHINE_SUPPORTS_SAVE ) // "
GAME( 1979, spacelnc, 0, spacefev, spacelnc, spacefev_state, empty_init, ROT270, "Nintendo", "Space Launcher", MACHINE_SUPPORTS_SAVE )
+
GAME( 1979, sheriff, 0, sheriff, sheriff, sheriff_state, empty_init, ROT270, "Nintendo", "Sheriff", MACHINE_SUPPORTS_SAVE )
GAME( 1980, bandido, sheriff, sheriff, bandido, sheriff_state, empty_init, ROT270, "Nintendo (Exidy license)", "Bandido", MACHINE_SUPPORTS_SAVE )
GAME( 1980, westgun2, sheriff, westgun2, westgun2, sheriff_state, empty_init, ROT270, "Nintendo (Taito Corporation license)", "Western Gun Part II", MACHINE_SUPPORTS_SAVE ) // official Taito PCBs, but title/copyright not shown
+
GAME( 1980, helifire, 0, helifire, helifire, helifire_state, empty_init, ROT270, "Nintendo", "HeliFire (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1980, helifirea, helifire, helifire, helifire, helifire_state, empty_init, ROT270, "Nintendo", "HeliFire (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )