Package screens
Class Screen32
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
This is the screen object for a "mode 32" screen, where each pixels is a word in GGGBBBBB RRRRRGGG format.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
Fields inherited from class screens.Screen
colourMode, copyMode, dataBuffer, divisior, isDirty, isDouble, isMac, isWindows, monitor, nbrOfBytesPerLine, pixelmask4, pixelmask8, QLmode, raster, screenImage, startAddress, stopAddress, vibrantColours, xEnd, xsize, yEnd, ysize
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
combineBlocks
(MC68000Cpu cpu) This combines two blocks (source 1, source2) with alpha blending and puts the result into the destination array and the image buffer.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 memory AND the underlying image data (if block is actually within screen).final int
Gets size, in bytes, of the vram.boolean
Checks whether this is a QL type screenvoid
moveBlock
(MC68000Cpu cpu, boolean copyFromScreen) This is called when a block of memory was copied to the vram..void
setVibrantColours
(boolean b, char[] vramBuffer) Sets whether brighter colours should be used.void
setVramBase
(int vrambase) Sets the new Vrambase.void
writeByteToScreen
(int address, int value, int val2) Writes a byte to the "screen memory" and paints the corresponding pixel on the screen.void
writeLongToScreen
(int addr, int value) Paints two pixels on the screen by setting the RGB values in the image dataBuffer.void
writeWordToScreen
(int addr, int value) Paints the pixel on the screen by setting the RGB value in the image dataBuffer.void
xorBlock
(MC68000Cpu cpu, boolean resolveStipple) XORs a block with colour : this updates the memory AND the underlying image data (if block is actually within screen).Methods inherited from class screens.Screen
changeDoubleSize, copyScreen, fillScreen, fillScreen, getColourMode, getDivisor, getImageSize, getKeysType, getLineSize, getMonitor, getMyMousePosition, getPreferredSize, getScreenBase, getScreenTop, getSizeInBytes, getXSize, getYSize, isDoubleSize, isVibrantColours, mouseInScreen, paintComponent, resetMouseButtons, screenPanelKeyPressed, screenPanelKeyReleased, screenPanelKeyTyped, screenPanelMouseEntered, screenPanelMouseExited, screenPanelMouseMoved, screenPanelMousePressed, screenPanelMouseReleased, setColourMode, setDisplayRegion, setEmuColourMode, setEndPositions, setFullSize, setIsMac, setIsWindows, setKeysType, setMonitor, setMouseClickDelay, setMousePosition, setMousewheelAccel, setPixels, setQLEmulationMode
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
Methods inherited from class javax.swing.JComponent
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
Methods inherited from class java.awt.Container
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
Methods inherited from class java.awt.Component
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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Constructor Details
-
Screen32
public Screen32(int xsize, int ysize, int vrambase, boolean vibrantColours, Monitor monitor, boolean isMac, boolean ddouble, int windowMode, boolean pctype) Creates the object.- Parameters:
xsize
- the xsize of the screen in pixels.ysize
- the ysize of the screen in pixels.vrambase
- the start of the "videoram" as far as the CPU is concerned.vibrantColours
- if true brighter colours are used (ie. the lover 3 bits of each R, G, B byte are set to 1).monitor
- the monitor.isMac
- true if screen is on a mac.ddouble
- true if double sized pixelswindowMode
- mode of window 0 = window , 1 = full size, 2 = special fullsizepctype
- true if standard home etc keys
-
-
Method Details
-
writeByteToScreen
public void writeByteToScreen(int address, int value, int val2) Writes a byte to the "screen memory" and paints the corresponding pixel on the screen. Not implemented for this type of screen!- Specified by:
writeByteToScreen
in classScreen
- Parameters:
address
- where to write to. This is the SMSQE address, where it thinks video memory lies.value
- the value to write.val2
- ignored
-
writeWordToScreen
public void writeWordToScreen(int addr, int value) Paints the pixel on the screen by setting the RGB value in the image dataBuffer. One word = 1 pixel.- Specified by:
writeWordToScreen
in classScreen
- Parameters:
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, a word in GGGBBBBB RRRRRGGG format.
-
writeLongToScreen
public void writeLongToScreen(int addr, int value) Paints two pixels on the screen by setting the RGB values in the image dataBuffer. One word = 1 pixel.- Specified by:
writeLongToScreen
in classScreen
- Parameters:
addr
- where to write to.value
- the value for 2 pixels (high word|low word, both in GGGBBBBB RRRRRGGG format).
-
fillBlock
Fills a block with colour : this updates the memory AND the underlying image data (if block is actually within screen). Sometimes, the block is only within the main memory. The main memory is an array of shorts, the image databuffer is an array of ints (ARGB). Colours may be stipples, (=diffferent colours on odd and even lines).- Specified by:
fillBlock
in classScreen
- Parameters:
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 smashed stipples are such that they affect a block of 2*2 pixels even row : p1p2 odd row : p3p4 where each of the 4 pixels may be one of two colours. Hence the colours in D6 and D7 are the colours for two consecutive pixels :p1 and p2 in D6, p3 and p4 in D7. This is why there may be a leading and a trailing colour. And this is why there are two different colours for even and odd rows.
-
xorBlock
XORs a block with colour : this updates the memory AND the underlying image data (if block is actually within screen). Sometimes, the block is only within the main memory. The main memory is an array of shorts, the image databuffer is an array of ints (ARGB). v. 1.15 : removed premature exit when not to screen.- Specified by:
xorBlock
in classScreen
- Parameters:
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 smashed stipples are such that they affect a block of 2*2 pixels even row : p1p2 odd row : p3p4 where each of the 4 pixels may be one of two colours. Hence the colours in D6 and D7 are the colours for two consecutive pixels :p1 and p2 in D6, p3 and p4 in D7. This is why there may be a leading and a trailing colour. And this is why there are two different colours for even and odd rows.
-
moveBlock
This is called when a block of memory was copied to the vram.. It must copy the data from the vram into the image. -
displayRegion
Displays a region if bytes were loaded directly to the screen memory. Used from CPU.- Specified by:
displayRegion
in classScreen
- Parameters:
cpu
- .start
- where the bytes were loaded to.nbrOfBytes
- how many bytes were loaded.
-
combineBlocks
This combines two blocks (source 1, source2) with alpha blending and puts the result into the destination array and the image buffer.- Specified by:
combineBlocks
in classScreen
- Parameters:
cpu
- the CPU used.
-
setVramBase
public void setVramBase(int vrambase) Sets the new Vrambase. Adjust vramtop accordingly.- Specified by:
setVramBase
in classScreen
- Parameters:
vrambase
- the new vrambase, the start address of the vram.
-
setVibrantColours
public void setVibrantColours(boolean b, char[] vramBuffer) Sets whether brighter colours should be used.- Specified by:
setVibrantColours
in classScreen
- Parameters:
b
-true
if brighter colours should be used.vramBuffer
- where data is stored.
-
getScreenSizeInBytes
public final int getScreenSizeInBytes()Gets size, in bytes, of the vram.- Specified by:
getScreenSizeInBytes
in classScreen
- Returns:
- screen size, in number of bytes.
-
isQLScreen
public boolean isQLScreen()Checks whether this is a QL type screen- Specified by:
isQLScreen
in classScreen
- Returns:
- true if this is a QL screen (512*256 i mode 4, 256*256 in mode 8), else false
-