Merge branch '86Box:master' into mirocrystal_3d
This commit is contained in:
@@ -53,10 +53,14 @@ We operate an IRC channel and a Discord server for discussing 86Box, its develop
|
||||
[](https://discord.gg/QXK9XTv)
|
||||
|
||||
Contributions
|
||||
---------
|
||||
-------------
|
||||
|
||||
We welcome all contributions to the project, as long as the [contribution guidelines](CONTRIBUTING.md) are followed.
|
||||
|
||||
Building
|
||||
---------
|
||||
For instructions on how to build 86Box from source, see the [build guide](https://86box.readthedocs.io/en/latest/dev/buildguide.html).
|
||||
|
||||
Licensing
|
||||
---------
|
||||
|
||||
|
@@ -1,73 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
URL="https://github.com/86Box/roms/archive/refs/tags/v4.2.zip"
|
||||
TMP_FILE="/tmp/86Box-ROMS.zip"
|
||||
EXTRACT_DIR="/tmp/86Box-ROMS-extracted"
|
||||
DEFAULT_TARGET_DIR="$HOME/.local/share/86Box/roms/"
|
||||
TARGET_DIR=${TARGET_DIR:-$DEFAULT_TARGET_DIR}
|
||||
|
||||
install_roms() {
|
||||
if [ -d "$TARGET_DIR" ] && [ "$(ls -A $TARGET_DIR)" ]; then
|
||||
echo "ROMS already installed in $TARGET_DIR"
|
||||
echo "To (re)install, please first remove ROMS with -r parameter"
|
||||
exit 1
|
||||
fi
|
||||
fetch -o "$TMP_FILE" "$URL"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to download the file from $URL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$EXTRACT_DIR"
|
||||
unzip "$TMP_FILE" -d "$EXTRACT_DIR"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to decompress the file"
|
||||
rm "$TMP_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$TARGET_DIR"
|
||||
cd "$EXTRACT_DIR"
|
||||
TOP_LEVEL_DIR=$(find . -mindepth 1 -maxdepth 1 -type d)
|
||||
|
||||
if [ -d "$TOP_LEVEL_DIR" ]; then
|
||||
mv "$TOP_LEVEL_DIR"/* "$TARGET_DIR"
|
||||
fi
|
||||
|
||||
rm -rf "$TMP_FILE" "$EXTRACT_DIR"
|
||||
echo "ROMS installed successfully in $TARGET_DIR"
|
||||
}
|
||||
|
||||
remove_roms() {
|
||||
if [ -d "$TARGET_DIR" ]; then
|
||||
rm -rf "$TARGET_DIR"
|
||||
echo "ROMS removed successfully from $TARGET_DIR"
|
||||
else
|
||||
echo "No ROMS directory found in $TARGET_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
help() {
|
||||
echo ""
|
||||
echo "$0 [-h|-i|-r]"
|
||||
echo " -h : this help"
|
||||
echo " -i : install (this parameter can be omitted)"
|
||||
echo " -r : remove the ROMS"
|
||||
echo ""
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
-h)
|
||||
help
|
||||
;;
|
||||
-r)
|
||||
remove_roms
|
||||
;;
|
||||
-i|*)
|
||||
install_roms
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
@@ -27,7 +27,9 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
add_compile_definitions(_FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE=1 _LARGEFILE64_SOURCE=1)
|
||||
endif()
|
||||
|
||||
if(CPPTHREADS)
|
||||
if(WIN32)
|
||||
target_sources(86Box PRIVATE qt/win_thread.c)
|
||||
else()
|
||||
target_sources(86Box PRIVATE thread.cpp)
|
||||
endif()
|
||||
|
||||
|
@@ -169,6 +169,7 @@ cart_close(int drive)
|
||||
cart_image_close(drive);
|
||||
cart_fns[drive][0] = 0;
|
||||
ui_sb_update_icon_state(SB_CARTRIDGE | drive, 1);
|
||||
resetx86();
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -1635,6 +1635,8 @@ fdc_callback(void *priv)
|
||||
return;
|
||||
}
|
||||
if (fdd_get_head(real_drive(fdc, fdc->drive)) == 0) {
|
||||
fdc->sector = 1;
|
||||
fdc->head |= 1;
|
||||
fdd_set_head(real_drive(fdc, fdc->drive), 1);
|
||||
if (!fdd_is_double_sided(real_drive(fdc, fdc->drive))) {
|
||||
fdc_noidam(fdc);
|
||||
|
@@ -443,16 +443,16 @@ vid_poll(void *priv)
|
||||
pcjr->ma++;
|
||||
buffer32->line[l][ef_x] = buffer32->line[l][ef_x + 1] =
|
||||
buffer32->line[l + 1][ef_x] = buffer32->line[l + 1][ef_x + 1] =
|
||||
pcjr->array[((dat >> 12) & pcjr->array[1]) + 16] + 16;
|
||||
pcjr->array[((dat >> 12) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
buffer32->line[l][ef_x + 2] = buffer32->line[l][ef_x + 3] =
|
||||
buffer32->line[l + 1][ef_x + 2] = buffer32->line[l + 1][ef_x + 3] =
|
||||
pcjr->array[((dat >> 8) & pcjr->array[1]) + 16] + 16;
|
||||
pcjr->array[((dat >> 8) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
buffer32->line[l][ef_x + 4] = buffer32->line[l][ef_x + 5] =
|
||||
buffer32->line[l + 1][ef_x + 4] = buffer32->line[l + 1][ef_x + 5] =
|
||||
pcjr->array[((dat >> 4) & pcjr->array[1]) + 16] + 16;
|
||||
pcjr->array[((dat >> 4) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
buffer32->line[l][ef_x + 6] = buffer32->line[l][ef_x + 7] =
|
||||
buffer32->line[l + 1][ef_x + 6] = buffer32->line[l + 1][ef_x + 7] =
|
||||
pcjr->array[(dat & pcjr->array[1]) + 16] + 16;
|
||||
pcjr->array[(dat & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
}
|
||||
break;
|
||||
case 0x12: /*160x200x16*/
|
||||
@@ -493,7 +493,7 @@ vid_poll(void *priv)
|
||||
chr = (dat >> 7) & 1;
|
||||
chr |= ((dat >> 14) & 2);
|
||||
buffer32->line[l][ef_x + c] = buffer32->line[l + 1][ef_x + c] =
|
||||
pcjr->array[(chr & pcjr->array[1]) + 16] + 16;
|
||||
pcjr->array[(chr & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
dat <<= 1;
|
||||
}
|
||||
}
|
||||
@@ -505,13 +505,13 @@ vid_poll(void *priv)
|
||||
attr = pcjr->vram[((pcjr->ma << 1) & mask) + offset + 1];
|
||||
drawcursor = ((pcjr->ma == ca) && pcjr->con && pcjr->cursoron);
|
||||
if (pcjr->array[3] & 4) {
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1]) + 16] + 16;
|
||||
cols[0] = pcjr->array[(((attr >> 4) & 7) & pcjr->array[1]) + 16] + 16;
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
cols[0] = pcjr->array[(((attr >> 4) & 7) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
if ((pcjr->blink & 16) && (attr & 0x80) && !drawcursor)
|
||||
cols[1] = cols[0];
|
||||
} else {
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1]) + 16] + 16;
|
||||
cols[0] = pcjr->array[((attr >> 4) & pcjr->array[1]) + 16] + 16;
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
cols[0] = pcjr->array[((attr >> 4) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
}
|
||||
if (pcjr->sc & 8)
|
||||
for (uint8_t c = 0; c < 8; c++)
|
||||
@@ -537,13 +537,13 @@ vid_poll(void *priv)
|
||||
attr = pcjr->vram[((pcjr->ma << 1) & mask) + offset + 1];
|
||||
drawcursor = ((pcjr->ma == ca) && pcjr->con && pcjr->cursoron);
|
||||
if (pcjr->array[3] & 4) {
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1]) + 16] + 16;
|
||||
cols[0] = pcjr->array[(((attr >> 4) & 7) & pcjr->array[1]) + 16] + 16;
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
cols[0] = pcjr->array[(((attr >> 4) & 7) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
if ((pcjr->blink & 16) && (attr & 0x80) && !drawcursor)
|
||||
cols[1] = cols[0];
|
||||
} else {
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1]) + 16] + 16;
|
||||
cols[0] = pcjr->array[((attr >> 4) & pcjr->array[1]) + 16] + 16;
|
||||
cols[1] = pcjr->array[((attr & 15) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
cols[0] = pcjr->array[((attr >> 4) & pcjr->array[1] & 0x0f) + 16] + 16;
|
||||
}
|
||||
pcjr->ma++;
|
||||
if (pcjr->sc & 8)
|
||||
|
179
src/qt/win_thread.c
Normal file
179
src/qt/win_thread.c
Normal file
@@ -0,0 +1,179 @@
|
||||
/*
|
||||
* 86Box A hypervisor and IBM PC system emulator that specializes in
|
||||
* running old operating systems and software designed for IBM
|
||||
* PC systems and compatibles from 1981 through fairly recent
|
||||
* system designs based on the PCI bus.
|
||||
*
|
||||
* This file is part of the 86Box distribution.
|
||||
*
|
||||
* Implement threads and mutexes for the Win32 platform.
|
||||
*
|
||||
*
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2017-2018 Fred N. van Kempen.
|
||||
*/
|
||||
#define UNICODE
|
||||
#define BITMAP WINDOWS_BITMAP
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <process.h>
|
||||
#undef BITMAP
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
#include <86box/86box.h>
|
||||
#include <86box/plat.h>
|
||||
#include <86box/thread.h>
|
||||
|
||||
typedef struct {
|
||||
HANDLE handle;
|
||||
} win_event_t;
|
||||
|
||||
/* For compatibility with thread.h, but Win32 does not allow named threads. */
|
||||
thread_t *
|
||||
thread_create_named(void (*func)(void *param), void *param, UNUSED(const char *name))
|
||||
{
|
||||
uintptr_t bt = _beginthread(func, 0, param);
|
||||
return ((thread_t *) bt);
|
||||
}
|
||||
|
||||
int
|
||||
thread_test_mutex(thread_t *arg)
|
||||
{
|
||||
if (arg == NULL)
|
||||
return (0);
|
||||
|
||||
return (WaitForSingleObject(arg, 0) == WAIT_OBJECT_0) ? 1 : 0;
|
||||
}
|
||||
|
||||
int
|
||||
thread_wait(thread_t *arg)
|
||||
{
|
||||
if (arg == NULL)
|
||||
return (0);
|
||||
|
||||
if (WaitForSingleObject(arg, INFINITE))
|
||||
return (1);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
event_t *
|
||||
thread_create_event(void)
|
||||
{
|
||||
win_event_t *ev = malloc(sizeof(win_event_t));
|
||||
|
||||
ev->handle = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||
|
||||
return ((event_t *) ev);
|
||||
}
|
||||
|
||||
void
|
||||
thread_set_event(event_t *arg)
|
||||
{
|
||||
win_event_t *ev = (win_event_t *) arg;
|
||||
|
||||
if (arg == NULL)
|
||||
return;
|
||||
|
||||
SetEvent(ev->handle);
|
||||
}
|
||||
|
||||
void
|
||||
thread_reset_event(event_t *arg)
|
||||
{
|
||||
win_event_t *ev = (win_event_t *) arg;
|
||||
|
||||
if (arg == NULL)
|
||||
return;
|
||||
|
||||
ResetEvent(ev->handle);
|
||||
}
|
||||
|
||||
int
|
||||
thread_wait_event(event_t *arg, int timeout)
|
||||
{
|
||||
win_event_t *ev = (win_event_t *) arg;
|
||||
|
||||
if (arg == NULL)
|
||||
return (0);
|
||||
|
||||
if (ev->handle == NULL)
|
||||
return (0);
|
||||
|
||||
if (timeout == -1)
|
||||
timeout = INFINITE;
|
||||
|
||||
if (WaitForSingleObject(ev->handle, timeout))
|
||||
return (1);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
thread_destroy_event(event_t *arg)
|
||||
{
|
||||
win_event_t *ev = (win_event_t *) arg;
|
||||
|
||||
if (arg == NULL)
|
||||
return;
|
||||
|
||||
CloseHandle(ev->handle);
|
||||
|
||||
free(ev);
|
||||
}
|
||||
|
||||
mutex_t *
|
||||
thread_create_mutex(void)
|
||||
{
|
||||
mutex_t *mutex = malloc(sizeof(CRITICAL_SECTION));
|
||||
|
||||
InitializeCriticalSection(mutex);
|
||||
|
||||
return mutex;
|
||||
}
|
||||
|
||||
int
|
||||
thread_wait_mutex(mutex_t *mutex)
|
||||
{
|
||||
if (mutex == NULL)
|
||||
return (0);
|
||||
|
||||
LPCRITICAL_SECTION critsec = (LPCRITICAL_SECTION) mutex;
|
||||
|
||||
EnterCriticalSection(critsec);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
thread_release_mutex(mutex_t *mutex)
|
||||
{
|
||||
if (mutex == NULL)
|
||||
return (0);
|
||||
|
||||
LPCRITICAL_SECTION critsec = (LPCRITICAL_SECTION) mutex;
|
||||
|
||||
LeaveCriticalSection(critsec);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void
|
||||
thread_close_mutex(mutex_t *mutex)
|
||||
{
|
||||
if (mutex == NULL)
|
||||
return;
|
||||
|
||||
LPCRITICAL_SECTION critsec = (LPCRITICAL_SECTION) mutex;
|
||||
|
||||
DeleteCriticalSection(critsec);
|
||||
|
||||
free(critsec);
|
||||
}
|
@@ -9930,8 +9930,14 @@ s3_init(const device_t *info)
|
||||
s3->width = 1024;
|
||||
|
||||
svga->ramdac = device_add(&sc11483_ramdac_device);
|
||||
svga->clock_gen = device_add(&av9194_device);
|
||||
svga->getclock = av9194_getclock;
|
||||
if (s3->card_type == S3_ORCHID_86C911) {
|
||||
svga->clock_gen = device_add(&av9194_device);
|
||||
svga->getclock = av9194_getclock;
|
||||
} else {
|
||||
/* DCS2824-0 = Diamond ICD2061A-compatible. */
|
||||
svga->clock_gen = device_add(&icd2061_device);
|
||||
svga->getclock = icd2061_getclock;
|
||||
}
|
||||
break;
|
||||
|
||||
case S3_AMI_86C924:
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -178,14 +178,14 @@ svga_render_text_40(svga_t *svga)
|
||||
charaddr = svga->charseta + (chr * 128);
|
||||
|
||||
if (drawcursor) {
|
||||
bg = svga->pallook[svga->egapal[attr & 15]];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
bg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
} else {
|
||||
fg = svga->pallook[svga->egapal[attr & 15]];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
fg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
|
||||
if (attr & 0x80 && svga->attrregs[0x10] & 8) {
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7]];
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7] & svga->dac_mask];
|
||||
if (svga->blink & 16)
|
||||
fg = bg;
|
||||
}
|
||||
@@ -256,13 +256,13 @@ svga_render_text_80(svga_t *svga)
|
||||
charaddr = svga->charseta + (chr * 128);
|
||||
|
||||
if (drawcursor) {
|
||||
bg = svga->pallook[svga->egapal[attr & 15]];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
bg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
} else {
|
||||
fg = svga->pallook[svga->egapal[attr & 15]];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
fg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
if (attr & 0x80 && svga->attrregs[0x10] & 8) {
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7]];
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7] & svga->dac_mask];
|
||||
if (svga->blink & 16)
|
||||
fg = bg;
|
||||
}
|
||||
@@ -323,13 +323,13 @@ svga_render_text_80_ksc5601(svga_t *svga)
|
||||
attr = svga->vram[addr + 1];
|
||||
|
||||
if (drawcursor) {
|
||||
bg = svga->pallook[svga->egapal[attr & 15]];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
bg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
} else {
|
||||
fg = svga->pallook[svga->egapal[attr & 15]];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
fg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
if (attr & 0x80 && svga->attrregs[0x10] & 8) {
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7]];
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7] & svga->dac_mask];
|
||||
if (svga->blink & 16)
|
||||
fg = bg;
|
||||
}
|
||||
@@ -378,13 +378,13 @@ svga_render_text_80_ksc5601(svga_t *svga)
|
||||
attr = svga->vram[((svga->ma << 1) + 1) & svga->vram_display_mask];
|
||||
|
||||
if (drawcursor) {
|
||||
bg = svga->pallook[svga->egapal[attr & 15]];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
bg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
fg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
} else {
|
||||
fg = svga->pallook[svga->egapal[attr & 15]];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4]];
|
||||
fg = svga->pallook[svga->egapal[attr & 15] & svga->dac_mask];
|
||||
bg = svga->pallook[svga->egapal[attr >> 4] & svga->dac_mask];
|
||||
if (attr & 0x80 && svga->attrregs[0x10] & 8) {
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7]];
|
||||
bg = svga->pallook[svga->egapal[(attr >> 4) & 7] & svga->dac_mask];
|
||||
if (svga->blink & 16)
|
||||
fg = bg;
|
||||
}
|
||||
@@ -468,14 +468,14 @@ svga_render_2bpp_s3_lowres(svga_t *svga)
|
||||
else
|
||||
svga->ma += 4;
|
||||
svga->ma &= svga->vram_mask;
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[4] = p[5] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
p[6] = p[7] = svga->pallook[svga->egapal[dat[0] & 3]];
|
||||
p[8] = p[9] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3]];
|
||||
p[10] = p[11] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3] & svga->dac_mask];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3] & svga->dac_mask];
|
||||
p[4] = p[5] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3] & svga->dac_mask];
|
||||
p[6] = p[7] = svga->pallook[svga->egapal[dat[0] & 3] & svga->dac_mask];
|
||||
p[8] = p[9] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3] & svga->dac_mask];
|
||||
p[10] = p[11] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3] & svga->dac_mask];
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3] & svga->dac_mask];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat[1] & 3] & svga->dac_mask];
|
||||
p += 16;
|
||||
}
|
||||
}
|
||||
@@ -501,14 +501,14 @@ svga_render_2bpp_s3_lowres(svga_t *svga)
|
||||
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[4] = p[5] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
p[6] = p[7] = svga->pallook[svga->egapal[dat[0] & 3]];
|
||||
p[8] = p[9] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3]];
|
||||
p[10] = p[11] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3] & svga->dac_mask];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3] & svga->dac_mask];
|
||||
p[4] = p[5] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3] & svga->dac_mask];
|
||||
p[6] = p[7] = svga->pallook[svga->egapal[dat[0] & 3] & svga->dac_mask];
|
||||
p[8] = p[9] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3] & svga->dac_mask];
|
||||
p[10] = p[11] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3] & svga->dac_mask];
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3] & svga->dac_mask];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat[1] & 3] & svga->dac_mask];
|
||||
|
||||
p += 16;
|
||||
}
|
||||
@@ -566,14 +566,14 @@ svga_render_2bpp_s3_highres(svga_t *svga)
|
||||
else
|
||||
svga->ma += 4;
|
||||
svga->ma &= svga->vram_mask;
|
||||
p[0] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[1] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[2] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
p[3] = svga->pallook[svga->egapal[dat[0] & 3]];
|
||||
p[4] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3]];
|
||||
p[5] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[6] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[7] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
p[0] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3] & svga->dac_mask];
|
||||
p[1] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3] & svga->dac_mask];
|
||||
p[2] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3] & svga->dac_mask];
|
||||
p[3] = svga->pallook[svga->egapal[dat[0] & 3] & svga->dac_mask];
|
||||
p[4] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3] & svga->dac_mask];
|
||||
p[5] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3] & svga->dac_mask];
|
||||
p[6] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3] & svga->dac_mask];
|
||||
p[7] = svga->pallook[svga->egapal[dat[1] & 3] & svga->dac_mask];
|
||||
p += 8;
|
||||
}
|
||||
}
|
||||
@@ -599,14 +599,14 @@ svga_render_2bpp_s3_highres(svga_t *svga)
|
||||
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
p[0] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[1] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[2] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
p[3] = svga->pallook[svga->egapal[dat[0] & 3]];
|
||||
p[4] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3]];
|
||||
p[5] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[6] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[7] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
p[0] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3] & svga->dac_mask];
|
||||
p[1] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3] & svga->dac_mask];
|
||||
p[2] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3] & svga->dac_mask];
|
||||
p[3] = svga->pallook[svga->egapal[dat[0] & 3] & svga->dac_mask];
|
||||
p[4] = svga->pallook[svga->egapal[(dat[1] >> 6) & 3] & svga->dac_mask];
|
||||
p[5] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3] & svga->dac_mask];
|
||||
p[6] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3] & svga->dac_mask];
|
||||
p[7] = svga->pallook[svga->egapal[dat[1] & 3] & svga->dac_mask];
|
||||
|
||||
p += 8;
|
||||
}
|
||||
@@ -652,17 +652,17 @@ svga_render_2bpp_headland_highres(svga_t *svga)
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
|
||||
p[0] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[1] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
p[0] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask] & svga->dac_mask];
|
||||
p[1] = svga->pallook[svga->egapal[dat & svga->plane_mask] & svga->dac_mask];
|
||||
dat = edatlookup[(edat[0] >> 4) & 3][(edat[1] >> 4) & 3] | (edatlookup[(edat[2] >> 4) & 3][(edat[3] >> 4) & 3] << 2);
|
||||
p[2] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[3] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
p[2] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask] & svga->dac_mask];
|
||||
p[3] = svga->pallook[svga->egapal[dat & svga->plane_mask] & svga->dac_mask];
|
||||
dat = edatlookup[(edat[0] >> 2) & 3][(edat[1] >> 2) & 3] | (edatlookup[(edat[2] >> 2) & 3][(edat[3] >> 2) & 3] << 2);
|
||||
p[4] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[5] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
p[4] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask] & svga->dac_mask];
|
||||
p[5] = svga->pallook[svga->egapal[dat & svga->plane_mask] & svga->dac_mask];
|
||||
dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
|
||||
p[6] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[7] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
p[6] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask] & svga->dac_mask];
|
||||
p[7] = svga->pallook[svga->egapal[dat & svga->plane_mask] & svga->dac_mask];
|
||||
|
||||
p += 8;
|
||||
}
|
||||
@@ -868,8 +868,8 @@ svga_render_indexed_gfx(svga_t *svga, bool highres, bool combine8bits)
|
||||
}
|
||||
} else if (combine8bits) {
|
||||
if (svga->packed_4bpp) {
|
||||
uint32_t p0 = svga->map8[c0];
|
||||
uint32_t p1 = svga->map8[c1];
|
||||
uint32_t p0 = svga->map8[c0 & svga->dac_mask];
|
||||
uint32_t p1 = svga->map8[c1 & svga->dac_mask];
|
||||
const int outoffs = i << dwshift;
|
||||
for (int subx = 0; subx < dotwidth; subx++)
|
||||
p[outoffs + subx] = p0;
|
||||
@@ -877,14 +877,14 @@ svga_render_indexed_gfx(svga_t *svga, bool highres, bool combine8bits)
|
||||
p[outoffs + subx + dotwidth] = p1;
|
||||
} else {
|
||||
uint32_t ccombined = (c0 << 4) | c1;
|
||||
uint32_t p0 = svga->map8[ccombined];
|
||||
uint32_t p0 = svga->map8[ccombined & svga->dac_mask];
|
||||
const int outoffs = (i >> 1) << dwshift;
|
||||
for (int subx = 0; subx < dotwidth; subx++)
|
||||
p[outoffs + subx] = p0;
|
||||
}
|
||||
} else {
|
||||
uint32_t p0 = svga->pallook[svga->egapal[c0]];
|
||||
uint32_t p1 = svga->pallook[svga->egapal[c1]];
|
||||
uint32_t p0 = svga->pallook[svga->egapal[c0] & svga->dac_mask];
|
||||
uint32_t p1 = svga->pallook[svga->egapal[c1] & svga->dac_mask];
|
||||
const int outoffs = i << dwshift;
|
||||
for (int subx = 0; subx < dotwidth; subx++)
|
||||
p[outoffs + subx] = p0;
|
||||
@@ -934,16 +934,16 @@ svga_render_8bpp_clone_highres(svga_t *svga)
|
||||
|
||||
for (x = 0; x <= (svga->hdisp /* + svga->scrollcache*/); x += 8) {
|
||||
dat = *(uint32_t *) (&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
p[0] = svga->map8[dat & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
dat = *(uint32_t *) (&svga->vram[(svga->ma + 4) & svga->vram_display_mask]);
|
||||
p[4] = svga->map8[dat & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[4] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 8;
|
||||
p += 8;
|
||||
@@ -963,16 +963,16 @@ svga_render_8bpp_clone_highres(svga_t *svga)
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp /* + svga->scrollcache*/); x += 8) {
|
||||
dat = *(uint32_t *) (&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
p[0] = svga->map8[dat & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
dat = *(uint32_t *) (&svga->vram[(svga->ma + 4) & svga->vram_display_mask]);
|
||||
p[4] = svga->map8[dat & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[4] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 8;
|
||||
p += 8;
|
||||
@@ -981,10 +981,10 @@ svga_render_8bpp_clone_highres(svga_t *svga)
|
||||
for (x = 0; x <= (svga->hdisp /* + svga->scrollcache*/); x += 4) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *) (&svga->vram[addr & svga->vram_display_mask]);
|
||||
p[0] = svga->map8[dat & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 4;
|
||||
p += 4;
|
||||
@@ -1043,10 +1043,10 @@ svga_render_8bpp_lowres(svga_t *svga)
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
dat = *(uint32_t *) (&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
p[0] = p[1] = svga->map8[dat & 0xff];
|
||||
p[2] = p[3] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[4] = p[5] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[6] = p[7] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = p[1] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[2] = p[3] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[4] = p[5] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[6] = p[7] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 4;
|
||||
p += 8;
|
||||
@@ -1055,10 +1055,10 @@ svga_render_8bpp_lowres(svga_t *svga)
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *) (&svga->vram[addr & svga->vram_display_mask]);
|
||||
p[0] = p[1] = svga->map8[dat & 0xff];
|
||||
p[2] = p[3] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[4] = p[5] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[6] = p[7] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = p[1] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[2] = p[3] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[4] = p[5] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[6] = p[7] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 4;
|
||||
p += 8;
|
||||
@@ -1091,16 +1091,16 @@ svga_render_8bpp_highres(svga_t *svga)
|
||||
|
||||
for (x = 0; x <= (svga->hdisp /* + svga->scrollcache*/); x += 8) {
|
||||
dat = *(uint32_t *) (&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
p[0] = svga->map8[dat & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
dat = *(uint32_t *) (&svga->vram[(svga->ma + 4) & svga->vram_display_mask]);
|
||||
p[4] = svga->map8[dat & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[4] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 8;
|
||||
p += 8;
|
||||
@@ -1120,16 +1120,16 @@ svga_render_8bpp_highres(svga_t *svga)
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp /* + svga->scrollcache*/); x += 8) {
|
||||
dat = *(uint32_t *) (&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
p[0] = svga->map8[dat & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
dat = *(uint32_t *) (&svga->vram[(svga->ma + 4) & svga->vram_display_mask]);
|
||||
p[4] = svga->map8[dat & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[4] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[5] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[6] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[7] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 8;
|
||||
p += 8;
|
||||
@@ -1138,10 +1138,10 @@ svga_render_8bpp_highres(svga_t *svga)
|
||||
for (x = 0; x <= (svga->hdisp /* + svga->scrollcache*/); x += 4) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *) (&svga->vram[addr & svga->vram_display_mask]);
|
||||
p[0] = svga->map8[dat & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & 0xff];
|
||||
p[0] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
p[1] = svga->map8[(dat >> 8) & svga->dac_mask & 0xff];
|
||||
p[2] = svga->map8[(dat >> 16) & svga->dac_mask & 0xff];
|
||||
p[3] = svga->map8[(dat >> 24) & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 4;
|
||||
p += 4;
|
||||
@@ -1173,19 +1173,19 @@ svga_render_8bpp_tseng_lowres(svga_t *svga)
|
||||
dat = *(uint32_t *) (&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[0] = p[1] = svga->map8[dat & 0xff];
|
||||
p[0] = p[1] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[2] = p[3] = svga->map8[dat & 0xff];
|
||||
p[2] = p[3] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[4] = p[5] = svga->map8[dat & 0xff];
|
||||
p[4] = p[5] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[6] = p[7] = svga->map8[dat & 0xff];
|
||||
p[6] = p[7] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 4;
|
||||
p += 8;
|
||||
@@ -1214,36 +1214,36 @@ svga_render_8bpp_tseng_highres(svga_t *svga)
|
||||
dat = *(uint32_t *) (&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[0] = svga->map8[dat & 0xff];
|
||||
p[0] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[1] = svga->map8[dat & 0xff];
|
||||
p[1] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[2] = svga->map8[dat & 0xff];
|
||||
p[2] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[3] = svga->map8[dat & 0xff];
|
||||
p[3] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
|
||||
dat = *(uint32_t *) (&svga->vram[(svga->ma + 4) & svga->vram_display_mask]);
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[4] = svga->map8[dat & 0xff];
|
||||
p[4] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[5] = svga->map8[dat & 0xff];
|
||||
p[5] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[6] = svga->map8[dat & 0xff];
|
||||
p[6] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
dat >>= 8;
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[7] = svga->map8[dat & 0xff];
|
||||
p[7] = svga->map8[dat & svga->dac_mask & 0xff];
|
||||
|
||||
svga->ma += 8;
|
||||
p += 8;
|
||||
|
Reference in New Issue
Block a user