My understanding of VGA graphics may be flawed, but it seems to have only one layer of graphics, yet the mouse cursor in MS-DOS (or at least DOSBox) appears to be independent of the graphics beneath, much like a "sprite layer" on most video game consoles of the time. Yet DOSBox's VGA mode appears to be a one-layer bitmap screen. Is the mouse on a separate layer that only it can occupy? Furthermore, is there a way for VGA to output hardware sprites?
How does the default mouse cursor in MS-DOS work without erasing whatever is underneath it?
424 Views Asked by puppydrum64 At
1
There are 1 best solutions below
Related Questions in SPRITE
- How to check collision if only bottom half of the sprite matters (think of a cherry with a stem)
- Removing sprite when Touched
- how to draw infinite amount of sprites?
- How to remove Sprite/Object from ArrayList?
- How do I remove Sprites when they go on a specific position?
- Cocos2D 2.x: Running CCWave action makes sprite disappear
- How to change Sprite texture to Animation
- How to create Sprite with animation?
- How to shoot infinite bullets in game coded in Python?
- Rotation and getBounds() in Phaser
- How to get subImages from a sprite sheet with different sprite sizes?
- Error using sprite module in python 3.1
- How to put a sprite in Unity5 without bugs?
- Setting swipe event to a sprite
- Java Game Development- Sprites colliding?
Related Questions in MOUSE
- c# move picturebox from an array of picturebox up when you hover mouse
- Unity3d get Mouse Input Axis
- Draw on screen using mouse in assembly (emu8086)
- PsychoPy Recording Multiple Mouse Clicks
- Automatically disable mouse acceleration - Windows
- QML forwards/back mouse buttons handling
- Mouse dragging detection - Unity3D
- Make the input wait for mouse or keyboard - Assembly Language
- How do you add a mouseListener to a jscrollbar?
- Error in reading Ubuntu 14.04 mouse event file (/dev/input/event3) with java programmig
- Node.JS trigger click event to OS
- JavaScript - event.which always return 1 for hovering
- Click the mouse to continue python 2
- Pointer Class Freezes when User is Idle
- How to disable all mouse events except click?
Related Questions in DOS
- DB ASM variable in Inline ASM C++
- move folders containing a string
- How do I display the result and remainder in ax and dx in Assembly (tasm)
- What does DX + 2 mean in mov ah,9 int 21h?
- Assembly code to print a new line string
- copy file from network shared drive to desktop using DOS copy command in Javascript
- DOS debug.exe does not want to enter a string
- Open Chrome Command line without 1st run new tabs
- Passing Unicode parameters to Windows .bat file when rerunning it
- I am using DOS and I am trying to make the background white
- How to do conditional compilation with TASM?
- Lost while debugging INT 13h
- How to pipe STDOUT and STDIN to qbasic program
- Issues writing to file in assembly
- How to execute another file in Assembly 16-bits
Related Questions in VGA
- Cosmos VGAScreen Clear Colors
- What is the best way to clear the screen in 32-bit x86 assembly language (Video mode 13h)
- VHDL VGA sync circuit
- Swap vga text screen halves using x86 assembly
- Window 8 content overflow
- How to fix clock hold in this code?
- Issue with VGA memory after booting to DIY kernel
- How do I fill in an FPGA generated circle in verilog for synthesis and VGA output?
- Blinking characters on Intel 8086
- Displaying Image on VGA and/or Television through ARM Micro controllers(in C)(SD Card)
- Simple OCR of Analog Video (VGA) Signal
- How to interface a vga monitor to fpga using verilog?
- How can I add a blinking cursor to the graphics video modes?
- color palette not working on certain colors in VGA
- How to switch to Super VGA in c or asm?
Related Questions in RETRO-COMPUTING
- Which library/code is responsible for rendering the terminal in retro computers?
- How to mimic logical XOR in ZX Spectrum basic?
- Connecting a function to QHttp::requestFinished
- Shared library with a .COM file
- Apple II - How to concatenate basic program lines together on a single line to reduce the program's size/line count
- Javascript 1.1 / HTML 3.0 Audio Player
- Sending string to serial bug, 6809 assembly, beginner
- Draw on screen border in Commodore 64
- Is a "single cycle cpu" possible if asynchronous components are used?
- How do labels execute in Assembly?
- Creating a multi-part archive to fit on floppy on Solaris 5.8
- Is there a way to access DHR on the Apple 2 from Applesoft Basic
- Can anyone recommend a language for making a parody/remake of the original Oregon Trail?
- What methods for using control flow are there in 6502?
- How does the default mouse cursor in MS-DOS work without erasing whatever is underneath it?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
As far as I know VGA has no hardware support for a mouse cursor or sprites. With the introduction of XGA sprites became available. But VGA only supports a text cursor but no graphical cursor.
So my guess is that the mouse driver reads the 16x16 pixels (or whatever the size of the mouse pointer is) and then stores it somewhere. Then it can draw the mouse pointer into the frame buffer. When the pointer is moved a bit to the left (for example) then the driver can restore the original 16x16 pixels in the frame buffer. Then it reads 16x16 pixels from the new location and then draws the pointer again.
As long as DOS Box is in windowed mode (means not in full screen) it doesn't access the VGA registers anyway but draws on a canvas provided by the operating system. So DOS Box can use hardware sprites even if VGA doesn't support it. Because in this situation VGA is not used at all.