New working software list additions

-----------------------------------
odyssey2: Martian Threat (Euro, Prototype, Alt) [unknown]
This commit is contained in:
hap 2020-08-19 18:47:32 +02:00
parent 4fe914da69
commit a51876c942
4 changed files with 33 additions and 11 deletions

View File

@ -1178,6 +1178,19 @@ The C7010 Chess Module had a NSC800 CMOS microprocessor, with 2K RAM and 8K ROM.
</part>
</software>
<software name="martiana" cloneof="martian">
<description>Martian Threat (Euro, Prototype, Alt)</description>
<year>198?</year>
<publisher>Philips</publisher>
<info name="programmer" value="Jake Dowding?" />
<part name="cart" interface="odyssey_cart">
<feature name="slot" value="o2_rom" />
<dataarea name="rom" size="8192">
<rom name="martian threat (europe, proto, alt).bin" size="8192" crc="335481f1" sha1="d6a3f2def966b798099dbf3c754ab12f69bb4ee8" offset="0" />
</dataarea>
</part>
</software>
<software name="2missprg">
<description>Missão Impossível/Viagem Programada (Bra)</description><!-- limited release -->
<year>198?</year>

View File

@ -780,7 +780,7 @@ OPHANDLER( mov_a_xr0 ) { burn_cycles(1); m_a = ram_r(R0); }
OPHANDLER( mov_a_xr1 ) { burn_cycles(1); m_a = ram_r(R1); }
OPHANDLER( mov_a_t ) { burn_cycles(1); m_a = m_timer; }
OPHANDLER( mov_psw_a ) { burn_cycles(1); m_psw = m_a; update_regptr(); }
OPHANDLER( mov_psw_a ) { burn_cycles(1); m_psw = m_a & ~0x08; update_regptr(); }
OPHANDLER( mov_sts_a ) { burn_cycles(1); m_sts = (m_sts & 0x0f) | (m_a & 0xf0); }
OPHANDLER( mov_r0_a ) { burn_cycles(1); R0 = m_a; }
OPHANDLER( mov_r1_a ) { burn_cycles(1); R1 = m_a; }
@ -1187,6 +1187,7 @@ void mcs48_cpu_device::device_reset()
/* confirmed from reset description */
m_pc = 0;
m_psw = m_psw & (C_FLAG | A_FLAG);
update_regptr();
m_a11 = 0x000;
m_dbbo = 0xff;
bus_w(0xff);

View File

@ -797,13 +797,11 @@ void i8244_device::sound_update()
u32 signal = m_vdc.s.shift3 | (m_vdc.s.shift2 << 8) | (m_vdc.s.shift1 << 16);
m_sh_output = signal & 1;
int feedback = m_sh_output;
signal >>= 1;
bool noise_enabled = bool(m_vdc.s.sound & 0x10);
int feedback = m_sh_output;
/* Noise tap is on bits 0 and 5 and fed back to bit 15 */
if (noise_enabled)
if (m_vdc.s.sound & 0x10)
{
feedback ^= signal >> 4 & 1; // pre-shift bit 5
signal = (signal & ~0x8000) | (feedback << 15);

View File

@ -33,8 +33,8 @@ XTAL notes (differs per model):
- G7400: 5.911MHz + 8.867MHz
TODO:
- backgamm doesn't draw all the sprites, what causes it? It doesn't seem like
it's a 824x bug since it does properly write data in the partial screen updates
- backgamm doesn't draw all the chars/sprites, it does multiple screen updates
and writes to the ptr/color registers, but does not increment the Y regs
- 824x screen resolution is not strictly defined, height(243) is correct, but
horizontal overscan differs depending on monitor/tv? see syracuse for overscan
- 824x on the real console, overlapping characters on eachother will cause
@ -52,6 +52,10 @@ TODO:
- verify odyssey3 cpu/video clocks
- odyssey3 keyboard layout is not the same as g7400, but there is no software
to test the scancodes
- partial screen updates aren't shown when using MAME's debugger, this is caused
by a forced full screen update and a reset_partial_updates in emu/video.cpp.
For the same reason, collision detection also won't work properly when stepping
through the debugger
BTANB:
- a lot of PAL games have problems on NTSC (the other way around, not so much)
@ -679,8 +683,8 @@ void odyssey2_state::odyssey2(machine_config &config)
/* cartridge */
O2_CART_SLOT(config, m_cart, o2_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("odyssey2");
SOFTWARE_LIST(config, "g7400_list").set_compatible("g7400");
SOFTWARE_LIST(config, "cart_list").set_original("odyssey2").set_filter("O2");
SOFTWARE_LIST(config, "g7400_list").set_compatible("g7400").set_filter("O2");
}
void odyssey2_state::videopac(machine_config &config)
@ -695,6 +699,9 @@ void odyssey2_state::videopac(machine_config &config)
m_i8244->add_route(ALL_OUTPUTS, "mono", 0.40);
m_maincpu->set_clock(XTAL(17'734'476) / 3);
subdevice<software_list_device>("cart_list")->set_filter("VP");
subdevice<software_list_device>("g7400_list")->set_filter("VP");
}
void odyssey2_state::videopacf(machine_config &config)
@ -752,8 +759,8 @@ void g7400_state::g7400(machine_config &config)
/* cartridge */
O2_CART_SLOT(config, m_cart, o2_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("g7400");
SOFTWARE_LIST(config, "ody2_list").set_compatible("odyssey2");
SOFTWARE_LIST(config, "cart_list").set_original("g7400").set_filter("VPP");
SOFTWARE_LIST(config, "ody2_list").set_compatible("odyssey2").set_filter("VPP");
}
void g7400_state::odyssey3(machine_config &config)
@ -774,6 +781,9 @@ void g7400_state::odyssey3(machine_config &config)
// same color encoder as O2 (no RGB port)
PALETTE(config.replace(), "palette", FUNC(odyssey2_state::odyssey2_palette), 16);
subdevice<software_list_device>("cart_list")->set_filter("O3");
subdevice<software_list_device>("ody2_list")->set_filter("O3");
}