odyssey2: add notes

This commit is contained in:
hap 2021-01-04 14:51:09 +01:00
parent 83ed267f2d
commit 52f81b1f94
3 changed files with 47 additions and 17 deletions

View File

@ -5,7 +5,7 @@
Magnavox Odyssey 2 cart emulation
(through slot devices)
***********************************************************************************************************/
***********************************************************************************************************/
#include "emu.h"
@ -127,7 +127,7 @@ static const char *o2_get_slot(int type)
/*-------------------------------------------------
call load
-------------------------------------------------*/
-------------------------------------------------*/
image_init_result o2_cart_slot_device::call_load()
{
@ -175,7 +175,7 @@ image_init_result o2_cart_slot_device::call_load()
/*-------------------------------------------------
get default card software
-------------------------------------------------*/
-------------------------------------------------*/
std::string o2_cart_slot_device::get_default_card_software(get_default_card_software_hook &hook) const
{
@ -194,7 +194,7 @@ std::string o2_cart_slot_device::get_default_card_software(get_default_card_soft
/*-------------------------------------------------
read_rom**
-------------------------------------------------*/
-------------------------------------------------*/
u8 o2_cart_slot_device::read_rom04(offs_t offset)
{
@ -214,7 +214,7 @@ u8 o2_cart_slot_device::read_rom0c(offs_t offset)
/*-------------------------------------------------
io
-------------------------------------------------*/
-------------------------------------------------*/
void o2_cart_slot_device::io_write(offs_t offset, u8 data)
{

View File

@ -7,10 +7,31 @@
#include "softlist_dev.h"
/*
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
Videopac / Odyssey 2 cartridge pinout:
bot. top
T0 1 A I/O _WR
B0 2 B GND
B1 3 C GND
B2 4 D VCC
B3 5 E I/O RD
B4 6 F _PSEN
B5 7 G A0
B6 8 H A1
B7 9 J A2
A10 10 K A3
P14 11 L A4
P11 12 M A5
P10 13 N A6
A11 14 P A7
A9 15 R A8
A8-A11 are the same pins as P20-P23
on Videopac+, B is used for video mixer override
*/
/* PCB */

View File

@ -61,15 +61,9 @@ TODO:
- 8244(NTSC) is not supposed to show characters near the upper border, but
hiding them will cause bugs in some Euro games
- 8245(PAL) video timing is not 100% accurate, though vtotal and htotal should
be correct
- according to tests, 8244 does not have a sound interrupt, but the Philips
service test cartridge for 8245 tests for it and fails if it did not get an irq
- likewise, 8244 does not have a horizontal interrupt, but does 8245 have it?
- tests done on 8244 suggests that Y(0xa4) is latched when reading X, but
that is inconsistent with the Philips service test cartridge: It reads X, Y, X,
then waits for 1 scanline, and reads Y again. It expects Y to change. Latching Y
will also cause video glitches to look different on some games when compared
to the real console, for example powerlrd.
be correct. The 8245 is put into slave mode at vblank, timing signals and
vblank IRQ are taken over during it (the Videopac pcb even has extra TTL to
catch the I/O read from 0xA1 to acknowledge the IRQ)
- ppp(the tetris game) does not work properly on PAL, it does look like PAL/NTSC
detection is working, see internal RAM $3D d7. So maybe it is due to inaccurate
PAL video timing. The game does mid-scanline video updates.
@ -77,6 +71,15 @@ TODO:
- g7400 helicopt sometimes locks up at the sea level, timing related?
- 4in1 and musician are not supposed to work on g7400, but work fine on MAME,
caused by bus conflict or because they write to P2?
- according to tests, 8244 does not have a sound interrupt, but the Philips
service test cartridge for 8245 tests for it and fails if it did not get an irq
- likewise, 8244 does not have a horizontal interrupt, but does 8245 have it?
- tests done on 8244 suggests that Y(0xa4) is latched when reading X, but that
is inconsistent with the Philips service test cartridge: It reads X, Y, X,
then waits for 1 scanline, and reads Y again. It expects Y to change. Latching Y
will also cause video glitches to look different on some games when compared
to the real console, for example powerlrd.
- joystick access (bus read) is only supposed to work from the internal BIOS
- verify odyssey3 cpu/video clocks
- problems with natural keyboard: videopacp has two enter keys, odyssey3 has
alternate inputs for -, =, +
@ -344,9 +347,12 @@ u32 vpp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const
u8 odyssey2_state::io_read(offs_t offset)
{
u8 data = m_cart->io_read(offset);
// P14, A7: RAM _CS
if (!(m_p1 & 0x10) && ~offset & 0x80)
data &= m_ram[offset];
// P13: 824x _CS, 824x RD is only enabled if P16 is low
if ((m_p1 & 0x48) == 0)
data &= m_i8244->read(offset);
@ -355,6 +361,7 @@ u8 odyssey2_state::io_read(offs_t offset)
void odyssey2_state::io_write(offs_t offset, u8 data)
{
// external write is only enabled if P16 is low
if (!(m_p1 & 0x40))
{
m_cart->io_write(offset, data);
@ -382,6 +389,7 @@ u8 odyssey2_state::p2_read()
if (!(m_p1 & 0x04))
{
// P12: 74156 keyboard decoder enable, 74156 inputs from P20-P22
// 74148 priority encoder, GS to P24, outputs to P25-P27
u8 inp = count_leading_zeros(m_keyboard[m_p2 & 0x07]->read()) - 24;
if (inp < 8)
@ -401,6 +409,7 @@ u8 odyssey2_state::bus_read()
{
u8 data = 0xff;
// same chip as keyboard
if (!(m_p1 & 0x04))
{
u8 sel = m_p2 & 0x07;