public class Screen16 extends Screen
javax.swing.JPanel.AccessibleJPanel
javax.swing.JComponent.AccessibleJComponent
black, blue, copyMode, cyan, dataBuffer, divisior, green, isDirty, isDouble, isMac, magenta, mode, monitor, nbrOfBytesPerLine, orange, pixelmask4, pixelmask8, QLmode, raster, red, screenImage, startAddress, stopAddress, vibrantColours, white, xsize, yellow, ysize
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Constructor and Description |
---|
Screen16(int xsize,
int ysize,
int vramBase,
boolean vibrantColours,
Monitor monitor,
boolean isMac)
This sets up the entire screen object, including the BufferedImage.
|
Modifier and Type | Method and Description |
---|---|
void |
clearScreen()
Clears the entire screen, but not the vramBuffer.
|
void |
combineBlocks(MC68000Cpu cpu)
This combines two blocks (source 1, source2) with alpha blending and puts the result into the screen.
|
void |
displayRegion(MC68000Cpu cpu,
int start,
int nbrOfBytes)
Displays a region if bytes were loaded directly to the screen memory.
|
void |
fillBlock(MC68000Cpu cpu,
boolean resolveStipple)
Fills a block with colour : this updates the "screen memory" AND the underlying image.
|
int |
getScreenSizeInBytes()
Gets size, in bytes, of the video ram.
|
boolean |
isQLScreen()
Checks whether this is a QL type screen
|
void |
moveBlock(MC68000Cpu cpu,
boolean copyFromScreen)
This is called when a block of memory was copied to the vram..
|
void |
setVibrantColours(boolean b,
short[] vramBuffer)
Sets whether brighter colours should be used.
|
void |
setVramBase(int vrambase)
Sets the new Vrambase and adjust vramtop and vrambase accordingly.
|
void |
writeByteToScreen(int addr,
int value,
int wordValue)
Writes a byte to the "screen memory" and paints the corresponding pixel on the screen.
|
void |
writeLongToScreen(int addr,
int value)
Writes a long word to the java screen, and paints the corresponding pixel on the screen..
|
void |
writeWordToScreen(int addr,
int value)
Writes a word to screen memory, and paints the corresponding pixel on the screen.
|
void |
xorBlock(MC68000Cpu cpu,
boolean resolveStipple)
XORs a block with colour : this updates the "screen memory" (vrambuffer) AND the underlying image.
|
copyScreen, fillScreen, fillScreen, getDivisor, getImageSize, getLineSize, getMode, getMonitor, getPreferredSize, getScreenBase, getScreenTop, getXSize, getYSize, isVibrantColours, mouseInScreen, paintComponent, screenPanelKeyPressed, screenPanelKeyReleased, screenPanelKeyTyped, screenPanelMouseEntered, screenPanelMouseExited, screenPanelMouseMoved, screenPanelMousePressed, screenPanelMouseReleased, setDisplayRegion, setDoubleSize, setEmuMode, setFullSize, setIsMac, setMode, setMonitor, setMouseClickDelay, setMousePosition, setPixels, setQLEmulationMode
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public Screen16(int xsize, int ysize, int vramBase, boolean vibrantColours, Monitor monitor, boolean isMac)
xsize
- the xsize of the screen, in pixels.ysize
- the ysize of the screen, in pixels.vramBase
- the start of the screen ram as the CPU sees it. For the CPU, this will generally be above the ROM.vibrantColours
- if true
, use full 8 bits per colour, else only the upper 5 (6 for green).monitor
- the monitor.isMac
- true if screen is on a mac.public void writeByteToScreen(int addr, int value, int wordValue)
writeByteToScreen
in class Screen
addr
- where to write to. This is the SMSQE address, where it thinks video memory lies.
It has already been checked that the address is in my memory space.value
- the value to writewordValue
- the value to write into the word this byte is part ofpublic void writeWordToScreen(int addr, int value)
writeWordToScreen
in class Screen
addr
- the address where to write to.
It is presumed that it has been checked that this is in screen mem.value
- the value to write to screen mem.public void writeLongToScreen(int addr, int value)
writeLongToScreen
in class Screen
addr
- where to write tovalue
- the valuepublic void clearScreen()
clearScreen
in class Screen
public void fillBlock(MC68000Cpu cpu, boolean resolveStipple)
fillBlock
in class Screen
cpu
- the CPu used.resolveStipple
- true if we need to convert a stipple number in d6 into colours in d6/d7
The block size and origin are assumed to have been adjusted for
correct position within the area to be set.
Registers:
Entry Exit
D0 smashed
D1 block size smashed
D2 block origin smashed
D3-D5 smashed
D6 stipple Nbr (cn_block) OR long word colour for even row (bm_block)
D7 colour mask in long word (cn_block)
or long word colour for odd row (bm_block) smashed
A1 area base address smashed
A2 area row increment smashedpublic void xorBlock(MC68000Cpu cpu, boolean resolveStipple)
xorBlock
in class Screen
cpu
- the CPu used.
xo x origin of the block
yo y origin of the block
xs x size of the block
ys y size of the block
stipple how we stipple the colour (0xffff - solid colour, 0= 1 of 4 , 2 =vertical, 3 horiz., 3 checkerboard
colour1x the stipple colour (in SMSQE format, mode 16).
colour2x the main colour (in SMSQE format, mode 16).resolveStipple
- true if we need to convert a stipple number in d6 into colours in d6/d7public void moveBlock(MC68000Cpu cpu, boolean copyFromScreen)
public void combineBlocks(MC68000Cpu cpu)
combineBlocks
in class Screen
cpu
- the CPU used.public void displayRegion(MC68000Cpu cpu, int start, int nbrOfBytes)
displayRegion
in class Screen
start
- where the bytes were loaded to.nbrOfBytes
- how many bytes were loaded.cpu
- .public void setVramBase(int vrambase)
setVramBase
in class Screen
vrambase
- the new vrambase.public void setVibrantColours(boolean b, short[] vramBuffer)
setVibrantColours
in class Screen
b
- true
if brighter colours should be used.vramBuffer
- the video ram buffer.public final int getScreenSizeInBytes()
getScreenSizeInBytes
in class Screen
public boolean isQLScreen()
isQLScreen
in class Screen