trunk/src/emu/machine/k053252.c
| r30783 | r30784 | |
| 25 | 25 | xexex: 01 FF 00 21 00 37 01 00 00 20 0C 0E 54 00 00 00 384x256 ~ 384x256 (*) |
| 26 | 26 | (all konamigx, cowboys of moo mesa, run & gun, dj main) |
| 27 | 27 | |
| 28 | | (*) hblank duration 512 (0x200), hdisp 384 (0x180), vblank duration 288 (0x120), vdisp 256 (0x100) |
| 28 | (*) hcount total 512 (0x200), hdisp 384 (0x180), vcount total 289 (0x121), vdisp 256 (0x100) |
| 29 | 29 | |
| 30 | 30 | Definitions from GX, look similar, all values big-endian, write-only: |
| 31 | 31 | |
| 32 | | 0-1: bits 9-0: HC - Total hblank duration (-1) Hres ~ (HC+1) - HFP - HBP - 8*(HSW+1) |
| 32 | 0-1: bits 9-0: HC - Total horizontal count (-1) Hres ~ (HC+1) - HFP - HBP - 8*(HSW+1) |
| 33 | 33 | 2-3: bits 8-0: HFP - HBlank front porch |
| 34 | 34 | 4-5: bits 8-0: HBP - HBlank back porch |
| 35 | 35 | 6 : bits 7-0: INT1EN |
| 36 | 36 | 7 : bits 7-0: INT2EN |
| 37 | | 8-9: bits 8-0: VC - Total vblank duration |
| 38 | | a : bits 7-0: VFP - VBlank front porch Vres ~ VC - VFP - VBP - (VSW+1) |
| 39 | | b : bits 7-0: VBP - VBlank back porch |
| 37 | 8-9: bits 8-0: VC - Total vertical count (-1) Vres ~ (VC+1) - VFP - (VBP+1) - (VSW+1) |
| 38 | a : bits 7-0: VFP - VBlank front porch |
| 39 | b : bits 7-0: VBP - VBlank back porch (-1) (?) |
| 40 | 40 | c : bits 7-4: VSW - V-Sync Width |
| 41 | 41 | c : bits 3-0: HSW - H-Sync Width |
| 42 | 42 | d : bits 7-0: INT-TIME |
| r30783 | r30784 | |
| 49 | 49 | TODO: |
| 50 | 50 | - xexex sets up 0x20 as the VC? default value? |
| 51 | 51 | - xexex layers are offsetted if you try to use the CCU |
| 52 | - according to p.14-15 both HBP and VBP have +1 added, but to get correct visible areas you have to add it only to VBP |
| 52 | 53 | - understand how to interpret the back / front porch values, and remove the offset x/y hack |
| 53 | 54 | - dual screen support (for Konami GX types 3/4) |
| 54 | 55 | - viostorm and dbz reads the VCT port, but their usage is a side effect to send an irq ack thru the same port: |
| r30783 | r30784 | |
| 171 | 172 | case 0x01: |
| 172 | 173 | m_hc = (m_regs[1]&0xff); |
| 173 | 174 | m_hc |= ((m_regs[0]&0x03)<<8); |
| 174 | | m_hc ++; |
| 175 | m_hc++; |
| 175 | 176 | logerror("%d (%04x) HC set\n",m_hc,m_hc); |
| 176 | 177 | res_change(); |
| 177 | 178 | break; |
| r30783 | r30784 | |
| 195 | 196 | case 0x09: |
| 196 | 197 | m_vc = (m_regs[9]&0xff); |
| 197 | 198 | m_vc |= ((m_regs[8]&0x01)<<8); |
| 199 | m_vc++; |
| 198 | 200 | logerror("%d (%04x) VC set\n",m_vc,m_vc); |
| 199 | 201 | res_change(); |
| 200 | 202 | break; |
| r30783 | r30784 | |
| 205 | 207 | break; |
| 206 | 208 | case 0x0b: |
| 207 | 209 | m_vbp = (m_regs[0x0b]&0xff); |
| 210 | m_vbp++; |
| 208 | 211 | logerror("%d (%04x) VBP set\n",m_vbp,m_vbp); |
| 209 | 212 | res_change(); |
| 210 | 213 | break; |