summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/saturn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/machine/saturn.c')
-rw-r--r--src/emu/machine/saturn.c62
1 files changed, 31 insertions, 31 deletions
diff --git a/src/emu/machine/saturn.c b/src/emu/machine/saturn.c
index e91e64ca174..e44137ff67f 100644
--- a/src/emu/machine/saturn.c
+++ b/src/emu/machine/saturn.c
@@ -1,39 +1,39 @@
/**************************************************************************************
- Sega Saturn (c) 1994 Sega
-
- List of things that needs to be implemented:
- - There's definitely an ack mechanism in SCU irqs. This is almost surely done via
- the ISM register (i.e. going 0->1 to the given bit acks it).
- - There might be a delay to exactly when SCU irqs happens. This is due to the basic
- fact that SCU runs at 14-ish MHz, so it needs some time before actually firing the
- irq.
- - Vblank-Out actually happens at the last screen line, not at 0.
- - VDP2 V counter has a similar roll-back as MD correspondent register:
- vpos line 0 == 0x1ff (Vblank-Out happens here)
- vpos line 1 == 0
+ Sega Saturn (c) 1994 Sega
+
+ List of things that needs to be implemented:
+ - There's definitely an ack mechanism in SCU irqs. This is almost surely done via
+ the ISM register (i.e. going 0->1 to the given bit acks it).
+ - There might be a delay to exactly when SCU irqs happens. This is due to the basic
+ fact that SCU runs at 14-ish MHz, so it needs some time before actually firing the
+ irq.
+ - Vblank-Out actually happens at the last screen line, not at 0.
+ - VDP2 V counter has a similar roll-back as MD correspondent register:
+ vpos line 0 == 0x1ff (Vblank-Out happens here)
+ vpos line 1 == 0
...
vpos line 241 == 0xf0 (Vblank-In happens here)
vpos line 246 == 0xf5
- vpos line 247 == 0x1ef (rolls back here)
- vpos line 263 == 0x1ff again
- - HBlank bit seems to follow a normal logic instead.
- - Timer 0 doesn't work if the TENB bit isn't enabled (documentation is a bit fussy
- over this).
- - Timer 0 fires at the HBlank-In signal, not before.
- - VDP2 H Counter actually counts x2 in non Hi-Res mode.
- - Timer 1 is definitely annoying. Starts from H-Blank signal and starts counting from
- that position.
- H counter value 0x282 (642) -> timer 1 fires at setting 1
- H counter value 0x284 (644) -> 2
- H counter value 0x2a0 (672) -> 0x10
+ vpos line 247 == 0x1ef (rolls back here)
+ vpos line 263 == 0x1ff again
+ - HBlank bit seems to follow a normal logic instead.
+ - Timer 0 doesn't work if the TENB bit isn't enabled (documentation is a bit fussy
+ over this).
+ - Timer 0 fires at the HBlank-In signal, not before.
+ - VDP2 H Counter actually counts x2 in non Hi-Res mode.
+ - Timer 1 is definitely annoying. Starts from H-Blank signal and starts counting from
+ that position.
+ H counter value 0x282 (642) -> timer 1 fires at setting 1
+ H counter value 0x284 (644) -> 2
+ H counter value 0x2a0 (672) -> 0x10
H counter value 0x2c0 (704) -> 0x20
H counter value 0x300 (768) -> 0x40
H counter value 0x340 (832) -> 0x60
- H counter value 0x352 (850) -> 0x69
- H counter value 0x000 (0) -> 0x6a, V counter goes +1 here (max range?)
- H counter value 0x02c (44) -> 0x80
- H counter value 0x0ec (236) -> 0xe0
+ H counter value 0x352 (850) -> 0x69
+ H counter value 0x000 (0) -> 0x6a, V counter goes +1 here (max range?)
+ H counter value 0x02c (44) -> 0x80
+ H counter value 0x0ec (236) -> 0xe0
H counter value 0x12c (300) -> 0x100
- Timer 1 seems to count backwards compared to Timer 0 from setting 0x6b onward.
@@ -250,9 +250,9 @@ READ32_MEMBER(saturn_state::saturn_scu_r)
case 0xa4/4:
if(LOG_SCU && !space.debugger_access()) logerror("(PC=%08x) IRQ status reg read MASK=%08x IST=%08x | ISM=%08x\n",space.device().safe_pc(),mem_mask,m_scu.ist,m_scu.ism);
/* TODO: Bug! trips an HW fault. Basically, it tries to read the IST bit 1 with that irq enabled.
- Densetsu no Ogre Battle doesn't like this, so it needs investigation ...
+ Densetsu no Ogre Battle doesn't like this, so it needs investigation ...
*/
-// res = m_scu.ist | ~m_scu.ism;
+// res = m_scu.ist | ~m_scu.ism;
res = m_scu.ist;
break;
case 0xc8/4:
@@ -474,7 +474,7 @@ void saturn_state::scu_dma_direct(address_space &space, UINT8 dma_ch)
}
/* Burning Rangers doesn't agree with this. */
-// m_scu.size[dma_ch] = 0;
+// m_scu.size[dma_ch] = 0;
if(!(DRUP(dma_ch))) m_scu.src[dma_ch] = tmp_src;
if(!(DWUP(dma_ch))) m_scu.dst[dma_ch] = tmp_dst;