Coverage Report - uk.co.javagear.VdpDebugFrame
 
Classes in this File Line Coverage Branch Coverage Complexity
VdpDebugFrame
0% 
0% 
4
 
 1  
 /*
 2  
  * VdpDebugFrame.java
 3  
  *
 4  
  * This file is part of JavaGear.
 5  
  *
 6  
  * JavaGear is free software; you can redistribute it and/or modify
 7  
  * it under the terms of the GNU General Public License as published by
 8  
  * the Free Software Foundation; either version 2 of the License, or
 9  
  * (at your option) any later version.
 10  
  *
 11  
  * JavaGear is distributed in the hope that it will be useful,
 12  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14  
  * GNU General Public License for more details.
 15  
  *
 16  
  * You should have received a copy of the GNU General Public License
 17  
  * along with JavaGear; if not, write to the Free Software
 18  
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 19  
  */
 20  
 
 21  
 package uk.co.javagear;
 22  
 
 23  
 import java.awt.GridLayout;
 24  
 import java.awt.Label;
 25  
 import java.awt.event.ActionEvent;
 26  
 import java.awt.event.ActionListener;
 27  
 import javax.swing.BorderFactory;
 28  
 import javax.swing.JButton;
 29  
 import javax.swing.JFrame;
 30  
 import javax.swing.JPanel;
 31  
 import javax.swing.border.Border;
 32  
 
 33  
 /**
 34  
  * Extract debug information from VDP.
 35  
  *
 36  
  * @author Copyright (C) 2002 Chris White
 37  
  * @version 17th March 2002
 38  
  * @see "JavaGear Final Project Report"
 39  
  */
 40  
 public final class VdpDebugFrame extends JFrame implements ActionListener {
 41  
     
 42  
     // Register Labels
 43  0
     private Label reg0 = new Label();
 44  0
     private Label reg1 = new Label();
 45  0
     private Label reg2 = new Label();
 46  0
     private Label reg3 = new Label();
 47  0
     private Label reg4 = new Label();
 48  0
     private Label reg5 = new Label();
 49  0
     private Label reg6 = new Label();
 50  0
     private Label reg7 = new Label();
 51  0
     private Label reg8 = new Label();
 52  0
     private Label reg9 = new Label();
 53  0
     private Label reg10 = new Label();
 54  
     
 55  
     // Interrupt Labels
 56  0
     private Label currentLine = new Label();
 57  0
     private Label lineCounter = new Label();
 58  0
     private Label lineInts = new Label();
 59  0
     private Label lineIntsPending = new Label();
 60  0
     private Label frameInts = new Label();
 61  0
     private Label frameIntsPending = new Label();
 62  0
     private Label z80IntLine = new Label();
 63  
     
 64  
     // Background Labels
 65  0
     private Label bgt = new Label();
 66  0
     private Label hScroll = new Label();
 67  0
     private Label vScroll = new Label();
 68  0
     private Label lockRows = new Label();
 69  0
     private Label lockColumns = new Label();
 70  
     
 71  
     // Sprite Labels
 72  0
     private Label sat = new Label();
 73  0
     private Label highSprites = new Label();
 74  0
     private Label zoomSprites = new Label();
 75  0
     private Label shiftLeft = new Label();
 76  0
     private Label spriteOverflow = new Label();
 77  
     
 78  
     private JPanel buttons;
 79  
     private JButton refresh;
 80  
     private JButton cancel;
 81  
     
 82  
     /**
 83  
      * Pointer to VDP.
 84  
      */
 85  
     private Vdp vdp;
 86  
     
 87  0
     public VdpDebugFrame(Vdp v) {
 88  0
         setTitle("VDP Debug Info");
 89  
         
 90  0
         this.vdp = v;
 91  
         
 92  0
         Border raised = BorderFactory.createRaisedBevelBorder();
 93  0
         Border regBorder = BorderFactory.createTitledBorder(raised, "Registers");
 94  0
         Border intBorder = BorderFactory.createTitledBorder(raised, "Interrupts");
 95  0
         Border bgBorder = BorderFactory.createTitledBorder(raised, "Background Layer");
 96  0
         Border spriteBorder = BorderFactory.createTitledBorder(raised, "Sprite Layer");
 97  
         
 98  0
         JPanel regPanel = new JPanel(new GridLayout(6, 4)); // h, v, hgap, vgap
 99  0
         regPanel.setBorder(regBorder);
 100  0
         regPanel.add(new Label("Reg 0 : "));
 101  0
         regPanel.add(reg0);
 102  0
         regPanel.add(new Label("Reg 1 : "));
 103  0
         regPanel.add(reg1);
 104  0
         regPanel.add(new Label("Reg 2 : "));
 105  0
         regPanel.add(reg2);
 106  0
         regPanel.add(new Label("Reg 3 : "));
 107  0
         regPanel.add(reg3);
 108  0
         regPanel.add(new Label("Reg 4 : "));
 109  0
         regPanel.add(reg4);
 110  0
         regPanel.add(new Label("Reg 5 : "));
 111  0
         regPanel.add(reg5);
 112  0
         regPanel.add(new Label("Reg 6 : "));
 113  0
         regPanel.add(reg6);
 114  0
         regPanel.add(new Label("Reg 7 : "));
 115  0
         regPanel.add(reg7);
 116  0
         regPanel.add(new Label("Reg 8 : "));
 117  0
         regPanel.add(reg8);
 118  0
         regPanel.add(new Label("Reg 9 : "));
 119  0
         regPanel.add(reg9);
 120  0
         regPanel.add(new Label("Reg 10: "));
 121  0
         regPanel.add(reg10);
 122  
         
 123  0
         JPanel intPanel = new JPanel(new GridLayout(7, 2));
 124  0
         intPanel.setBorder(intBorder);
 125  0
         intPanel.add(new Label("Current Line : "));
 126  0
         intPanel.add(currentLine);
 127  0
         intPanel.add(new Label("Line Counter : "));
 128  0
         intPanel.add(lineCounter);
 129  0
         intPanel.add(new Label("Line Interrupts : "));
 130  0
         intPanel.add(lineInts);
 131  0
         intPanel.add(new Label("Line Interrupt Pending  : "));
 132  0
         intPanel.add(lineIntsPending);
 133  0
         intPanel.add(new Label("Frame Interrupts : "));
 134  0
         intPanel.add(frameInts);
 135  0
         intPanel.add(new Label("Frame Interrupt Pending : "));
 136  0
         intPanel.add(frameIntsPending);
 137  0
         intPanel.add(new Label("Z80 Interrupt Line : "));
 138  0
         intPanel.add(z80IntLine);
 139  
         
 140  0
         JPanel bgPanel = new JPanel(new GridLayout(5, 2));
 141  0
         bgPanel.setBorder(bgBorder);
 142  0
         bgPanel.add(new Label("Background Table : "));
 143  0
         bgPanel.add(bgt);
 144  0
         bgPanel.add(new Label("Horizontal Scroll : "));
 145  0
         bgPanel.add(hScroll);
 146  0
         bgPanel.add(new Label("Vertical Scroll : "));
 147  0
         bgPanel.add(vScroll);
 148  0
         bgPanel.add(new Label("Lock Top Two Rows : "));
 149  0
         bgPanel.add(lockRows);
 150  0
         bgPanel.add(new Label("Lock Right Eight Columns : "));
 151  0
         bgPanel.add(lockColumns);
 152  
         
 153  0
         JPanel spritePanel = new JPanel(new GridLayout(5, 2));
 154  0
         spritePanel.setBorder(spriteBorder);
 155  0
         spritePanel.add(new Label("Sprite Attribute Table : "));
 156  0
         spritePanel.add(sat);
 157  0
         spritePanel.add(new Label("8x16 Sprites : "));
 158  0
         spritePanel.add(highSprites);
 159  0
         spritePanel.add(new Label("Zoom Sprites : "));
 160  0
         spritePanel.add(zoomSprites);
 161  0
         spritePanel.add(new Label("Shift 8 Pixels To Left : "));
 162  0
         spritePanel.add(shiftLeft);
 163  0
         spritePanel.add(new Label("Sprite Overflow : "));
 164  0
         spritePanel.add(spriteOverflow);
 165  
         
 166  0
         JPanel infoPanel = new JPanel(new GridLayout(2, 2));
 167  0
         infoPanel.add(bgPanel);
 168  0
         infoPanel.add(spritePanel);
 169  0
         infoPanel.add(regPanel);
 170  0
         infoPanel.add(intPanel);
 171  
         
 172  0
         buttons = new JPanel(new GridLayout(1, 2));
 173  0
         refresh = new JButton("Refresh");
 174  0
         cancel = new JButton("Cancel");
 175  0
         buttons.add(refresh);
 176  0
         buttons.add(cancel);
 177  
         
 178  0
         getContentPane().add(infoPanel);
 179  0
         getContentPane().add(buttons, "South");
 180  
         
 181  0
         refresh.addActionListener(this);
 182  0
         cancel.addActionListener(this);
 183  
         
 184  0
         setResizable(false);
 185  0
         pack(); pack();
 186  0
         refresh();
 187  0
     }
 188  
     
 189  
     public void actionPerformed(ActionEvent evt) {
 190  0
         if (evt.getSource() == refresh) {
 191  0
             this.refresh();
 192  0
         } else if (evt.getSource() == cancel) {
 193  0
             this.setVisible(false);
 194  
         }
 195  0
     }
 196  
     
 197  
     public void refresh() {
 198  
         // Set Registers Panel
 199  0
         reg0.setText(Integer.toBinaryString(vdp.getReg(0)));
 200  0
         reg1.setText(Integer.toBinaryString(vdp.getReg(1)));
 201  0
         reg2.setText(Integer.toBinaryString(vdp.getReg(2)));
 202  0
         reg3.setText(Integer.toBinaryString(vdp.getReg(3)));
 203  0
         reg4.setText(Integer.toBinaryString(vdp.getReg(4)));
 204  0
         reg5.setText(Integer.toBinaryString(vdp.getReg(5)));
 205  0
         reg6.setText(Integer.toBinaryString(vdp.getReg(6)));
 206  0
         reg7.setText(Integer.toBinaryString(vdp.getReg(7)));
 207  0
         reg8.setText(Integer.toBinaryString(vdp.getReg(8)));
 208  0
         reg9.setText(Integer.toBinaryString(vdp.getReg(9)));
 209  0
         reg10.setText(Integer.toBinaryString(vdp.getReg(10)));
 210  
         
 211  
         // Set Interrupt Panel
 212  0
         currentLine.setText(Integer.toString(vdp.getLineNo()));
 213  0
         lineCounter.setText(Integer.toString(vdp.getCounter()) + " / " +
 214  
                 Integer.toString(vdp.getReg(10)));
 215  
         
 216  0
         if ((vdp.getReg(0) & 0x10) == 0x10) {
 217  0
             lineInts.setText("Enabled");
 218  
         } else {
 219  0
             lineInts.setText("Disabled");
 220  
         }
 221  
         
 222  0
         lineIntsPending.setText(new Boolean(vdp.getLineIntPending()).toString());
 223  
         
 224  0
         if ((vdp.getReg(1) & 0x20) == 0x20) {
 225  0
             frameInts.setText("Enabled");
 226  
         } else {
 227  0
             frameInts.setText("Disabled");
 228  
         }
 229  
         
 230  0
         frameIntsPending.setText(new Boolean(vdp.getFrameIntPending()).toString());
 231  0
         z80IntLine.setText(new Boolean(vdp.getIrqStatus()).toString());
 232  
         
 233  
         // Set Background Panel
 234  0
         bgt.setText("0x" + Integer.toHexString((vdp.getReg(2) & 0x0f & ~0x01) << 10));
 235  0
         hScroll.setText(Integer.toString(vdp.getReg(8)));
 236  0
         vScroll.setText(Integer.toString(vdp.getReg(9)));
 237  
         
 238  0
         if ((vdp.getReg(0) & 0x40) == 0x40) {
 239  0
             lockRows.setText("Enabled");
 240  
         } else {
 241  0
             lockRows.setText("Disabled");
 242  
         }
 243  
         
 244  0
         if ((vdp.getReg(0) & 0x80) == 0x80) {
 245  0
             lockColumns.setText("Enabled");
 246  
         } else {
 247  0
             lockColumns.setText("Disabled");
 248  
         }
 249  
         
 250  
         // Set Sprite Panel
 251  0
         sat.setText("0x" + Integer.toHexString((vdp.getReg(5) & ~0x01 & ~0x80) << 7));
 252  0
         if ((vdp.getReg(1) & 0x02) == 0x02) {
 253  0
             highSprites.setText("Enabled");
 254  
         } else {
 255  0
             highSprites.setText("Disabled");
 256  
         }
 257  
         
 258  0
         if ((vdp.getReg(1) & 0x01) == 0x01) {
 259  0
             zoomSprites.setText("Enabled");
 260  
         } else {
 261  0
             zoomSprites.setText("Disabled");
 262  
         }
 263  
         
 264  0
         if ((vdp.getReg(0) & 0x08) == 0x08) {
 265  0
             shiftLeft.setText("Enabled");
 266  
         } else {
 267  0
             shiftLeft.setText("Disabled");
 268  
         }
 269  
         
 270  0
         spriteOverflow.setText(new Boolean(vdp.getSpriteOverflow()).toString());
 271  0
     }
 272  
     
 273  
 }