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?
425 Views Asked by puppydrum64 At
1
There are 1 best solutions below
Related Questions in SPRITE
- How to render sprites for a snake game using SFML and C++
- Drag SKShapeNode respecting other SKShapeNode's boundaries
- Create SVG, set href instead of xlink:href in pure Javascript
- Unity 2D - animated background
- Making sprite objects move on their own and by user control. Sprite objects do not react to keys being pressed
- Inverting a hitbox
- Sprite_index is not set
- mouse click on sprite image rather than on its bounding box
- Get Direction a Sprite Appears to Be Facing Relative to the Camera
- Pygame surfaces being unintentionally shared between objects
- PNG sprite sheet - Full Screen size with React
- How to run code.org animations offline using javascript and html files?
- Unable to get contour when bounding boxes are not overlapping
- Should a sprite file be reloaded for each individual sprite?
- How to detect and crop individual sprites when their bounding boxes overlap?
Related Questions in MOUSE
- Mouse pointer after some html elements
- VTK MouseEvents example not working with Java wrappers
- How do I block programs from detecting mouse input?
- Get Mouse Scroll Wheel Value in Unreal Engine 5 C++
- How do I create a click and drag system for a sprite in Godot?
- Combining Mouse Event Monitoring and Listener Programs: Python Multi-threading Exploration
- Mouse hook with non-English language results in extremely laggy mouse
- How to make code work together ? lua script
- On Windows, intercepts and change a click event system-wide
- In React flow, I want to add custom many cursors however, the cursor is not relative to the canvas; it relative to the outer div; how to handle this?
- i can´t select text in big query studio with the mouse or the trackpad
- How can I detect a mousewheel click in Openlayers 8.2?
- Detect Mouse Movement and Direction in Godot
- smooth video time shift
- Pyhton physical mouse click
Related Questions in DOS
- DOSbox automatically freezes and crashes without any prompt warnings
- How to limit printing contents of ASCII file to once while using recursion?
- Move string to end of file assembly
- I search a unit to solve the turbo pascal 255 string limit
- Unknown error in assembly language code, the result of multiplication operation is always random symbol
- is there analog of unix program "which" in DOS operating system?
- will gwbasic run on 32 bit windows 7
- "Symbol not defined : @STACK " error in ASM code for 8086. Compiled using DOSBOX ,MASM
- Why does code in MS-DOS Debug does not run and makes the prompt disappear?
- Error in emulator output for pong game in assembly language
- x86 MS Macro Assembler Hello World program crashes
- Convert DOS od (dump) file output to txt
- MS-DOS D-Fend Reloaded file encoding "application/octet-stream; charset=binary" to ASCII in ubuntu
- Checking for collision of snake with border in 8088 assembly language
- Question for the dos EGA 0E mode port programming
Related Questions in VGA
- Simple programming of VGA cursor
- Writing a counter to approximate a fraction with minimal error
- osdev - VGA in protected mode initializing weirdly
- Char * is always null terminator
- Implementing vertical sync MS DOS C++
- Using MCU to emulate vsync only in vga signal
- vga Text mode can't print strings
- Why does switch to long mode cause VGA text output to behave strangely?
- What does this Pascal code set the VGA card in?
- x86 Assembly: At the end of the program get a strange output
- How can I write text to a 640x480 screen in C?
- Why an x86 assembly program does not paint the symbol
- Why an x86 assembly program paints the wrong symbol
- How to write in a block memory in vivado
- How to access the whole screen in x64 assembly, without BIOS or C
Related Questions in RETRO-COMPUTING
- Apple II - How to concatenate basic program lines together on a single line to reduce the program's size/line count
- Shared library with a .COM file
- Connecting a function to QHttp::requestFinished
- How can I enable Uniflex BSD sockets to be BROADCAST?
- What is the intended purpose of the Hex Branch instruction on the IBM System/32
- Using xa65 to create a Commodore 64 .prg file and disk image
- Porting from Santaka ZX Spectrum clone code to Z80 to compile a Santaka game - how to translate to this dialect?
- Trouble understanding the Z80 book and flags
- Reverse Bresenham algorithm? How to convert array of drawn pixels into coordinates
- CLion custom compiler: Makefile parser says "No compilation commands found"
- ZX81 BASIC to Pygame Conversion of "Dropout" Game
- How to make a hidden menu with elements focusable with keyboard?
- How did the first GPUs get support from CPUs?
- Database join in the '60s with tape / punch cards only?
- Linker Inserts Unnecessary Opcode Padding
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 # Hahtags
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.