mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-05-09 11:51:09 +08:00
more cleanup
This commit is contained in:
parent
ae98781236
commit
1aa269035b
24
include/pc98_dac.h
Normal file
24
include/pc98_dac.h
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
void pc98_update_palette(void);
|
||||
void pc98_update_digpal(unsigned char ent);
|
||||
void pc98_set_digpal_entry(unsigned char ent,unsigned char grb);
|
||||
void pc98_set_digpal_pair(unsigned char start,unsigned char pair);
|
||||
unsigned char pc98_get_digpal_pair(unsigned char start);
|
||||
void VGA_DAC_UpdateColor( Bitu index );
|
||||
|
||||
extern uint32_t pc98_text_palette[8];
|
||||
extern uint8_t pc98_16col_analog_rgb_palette_index;
|
||||
|
||||
extern uint8_t pc98_pal_analog[256*3]; /* G R B 0x0..0xF */
|
||||
extern uint8_t pc98_pal_digital[8]; /* G R B 0x0..0x7 */
|
||||
|
||||
/* 4-bit to 6-bit expansion */
|
||||
static inline unsigned char dac_4to6(unsigned char c4) {
|
||||
/* a b c d . .
|
||||
*
|
||||
* becomes
|
||||
*
|
||||
* a b c d a b */
|
||||
return (c4 << 2) | (c4 >> 2);
|
||||
}
|
||||
|
@ -120,6 +120,8 @@ struct PC98_GDC_state {
|
||||
|
||||
typedef union pc98_tile egc_quad[4];
|
||||
|
||||
extern bool gdc_analog;
|
||||
|
||||
extern uint32_t pc98_text_palette[8];
|
||||
|
||||
extern struct PC98_GDC_state pc98_gdc[2];
|
||||
|
@ -12,6 +12,6 @@ libhardware_a_SOURCES = adlib.cpp dma.cpp gameblaster.cpp hardware.cpp iohandler
|
||||
vga.cpp vga_attr.cpp vga_crtc.cpp vga_dac.cpp vga_draw.cpp vga_gfx.cpp vga_other.cpp \
|
||||
vga_memory.cpp vga_misc.cpp vga_seq.cpp vga_xga.cpp vga_s3.cpp vga_tseng.cpp vga_paradise.cpp \
|
||||
cmos.cpp disney.cpp gus.cpp mpu401.cpp ipx.cpp ipxserver.cpp ne2000.cpp hardopl.cpp dbopl.cpp innova.cpp dongle.cpp \
|
||||
voodoo.cpp voodoo_interface.cpp voodoo_emu.cpp ps1_sound.cpp sn76496.h ide.cpp floppy.cpp voodoo_vogl.cpp voodoo_opengl.cpp nukedopl.cpp pc98.cpp vga_pc98_gdc.cpp
|
||||
voodoo.cpp voodoo_interface.cpp voodoo_emu.cpp ps1_sound.cpp sn76496.h ide.cpp floppy.cpp voodoo_vogl.cpp voodoo_opengl.cpp nukedopl.cpp pc98.cpp vga_pc98_gdc.cpp vga_pc98_dac.cpp
|
||||
|
||||
|
||||
|
@ -115,7 +115,8 @@ am_libhardware_a_OBJECTS = adlib.$(OBJEXT) dma.$(OBJEXT) \
|
||||
dongle.$(OBJEXT) voodoo.$(OBJEXT) voodoo_interface.$(OBJEXT) \
|
||||
voodoo_emu.$(OBJEXT) ps1_sound.$(OBJEXT) ide.$(OBJEXT) \
|
||||
floppy.$(OBJEXT) voodoo_vogl.$(OBJEXT) voodoo_opengl.$(OBJEXT) \
|
||||
nukedopl.$(OBJEXT) pc98.$(OBJEXT) vga_pc98_gdc.$(OBJEXT)
|
||||
nukedopl.$(OBJEXT) pc98.$(OBJEXT) vga_pc98_gdc.$(OBJEXT) \
|
||||
vga_pc98_dac.$(OBJEXT)
|
||||
libhardware_a_OBJECTS = $(am_libhardware_a_OBJECTS)
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
@ -347,7 +348,7 @@ libhardware_a_SOURCES = adlib.cpp dma.cpp gameblaster.cpp hardware.cpp iohandler
|
||||
vga.cpp vga_attr.cpp vga_crtc.cpp vga_dac.cpp vga_draw.cpp vga_gfx.cpp vga_other.cpp \
|
||||
vga_memory.cpp vga_misc.cpp vga_seq.cpp vga_xga.cpp vga_s3.cpp vga_tseng.cpp vga_paradise.cpp \
|
||||
cmos.cpp disney.cpp gus.cpp mpu401.cpp ipx.cpp ipxserver.cpp ne2000.cpp hardopl.cpp dbopl.cpp innova.cpp dongle.cpp \
|
||||
voodoo.cpp voodoo_interface.cpp voodoo_emu.cpp ps1_sound.cpp sn76496.h ide.cpp floppy.cpp voodoo_vogl.cpp voodoo_opengl.cpp nukedopl.cpp pc98.cpp vga_pc98_gdc.cpp
|
||||
voodoo.cpp voodoo_interface.cpp voodoo_emu.cpp ps1_sound.cpp sn76496.h ide.cpp floppy.cpp voodoo_vogl.cpp voodoo_opengl.cpp nukedopl.cpp pc98.cpp vga_pc98_gdc.cpp vga_pc98_dac.cpp
|
||||
|
||||
all: all-recursive
|
||||
|
||||
@ -439,6 +440,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vga_misc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vga_other.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vga_paradise.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vga_pc98_dac.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vga_pc98_gdc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vga_s3.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vga_seq.Po@am__quote@
|
||||
|
@ -130,6 +130,7 @@
|
||||
#include "util_units.h"
|
||||
#include "control.h"
|
||||
#include "pc98_cg.h"
|
||||
#include "pc98_dac.h"
|
||||
#include "pc98_gdc.h"
|
||||
#include "pc98_gdc_const.h"
|
||||
#include "mixer.h"
|
||||
@ -705,9 +706,6 @@ void VGA_UnsetupSEQ(void);
|
||||
#define seq(blah) vga.seq.blah
|
||||
#define crtc(blah) vga.crtc.blah
|
||||
|
||||
void VGA_DAC_UpdateColor( Bitu index );
|
||||
|
||||
uint32_t pc98_text_palette[8];
|
||||
uint8_t pc98_gdc_tile_counter=0;
|
||||
uint8_t pc98_gdc_modereg=0;
|
||||
uint8_t pc98_egc_access=0;
|
||||
@ -718,17 +716,6 @@ uint8_t pc98_egc_maskef[2]; /* effective (Neko: egc.mask2) *
|
||||
uint8_t pc98_egc_mask[2]; /* host given (Neko: egc.mask) */
|
||||
bool GDC_vsync_interrupt = false;
|
||||
uint8_t GDC_display_plane = false;
|
||||
uint8_t pc98_16col_analog_rgb_palette_index = 0;
|
||||
|
||||
/* 4-bit to 6-bit expansion */
|
||||
static inline unsigned char dac_4to6(unsigned char c4) {
|
||||
/* a b c d . .
|
||||
*
|
||||
* becomes
|
||||
*
|
||||
* a b c d a b */
|
||||
return (c4 << 2) | (c4 >> 2);
|
||||
}
|
||||
|
||||
void pc98_crtc_write(Bitu port,Bitu val,Bitu iolen) {
|
||||
switch (port&0xE) {
|
||||
@ -780,28 +767,6 @@ uint8_t pc98_egc_regload = 0;
|
||||
uint8_t pc98_egc_rop = 0xF0;
|
||||
uint8_t pc98_egc_foreground_color = 0;
|
||||
uint8_t pc98_egc_background_color = 0;
|
||||
|
||||
void pc98_update_digpal(unsigned char ent);
|
||||
|
||||
uint8_t pc98_pal_analog[256*3]; /* G R B 0x0..0xF */
|
||||
uint8_t pc98_pal_digital[8]; /* G R B 0x0..0x7 */
|
||||
|
||||
void pc98_update_palette(void) {
|
||||
if (pc98_gdc_vramop & (1 << VOPBIT_ANALOG)) {
|
||||
for (unsigned int i=0;i < 16;i++) {
|
||||
vga.dac.rgb[i].green = dac_4to6(pc98_pal_analog[(3*i) + 0]&0xF); /* re-use VGA DAC */
|
||||
vga.dac.rgb[i].red = dac_4to6(pc98_pal_analog[(3*i) + 1]&0xF); /* re-use VGA DAC */
|
||||
vga.dac.rgb[i].blue = dac_4to6(pc98_pal_analog[(3*i) + 2]&0xF); /* re-use VGA DAC */
|
||||
VGA_DAC_UpdateColor(i);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (unsigned int i=0;i < 8;i++) {
|
||||
pc98_update_digpal(i);
|
||||
VGA_DAC_UpdateColor(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Port 0x6A command handling */
|
||||
void pc98_port6A_command_write(unsigned char b) {
|
||||
@ -918,32 +883,6 @@ void pc98_a1_write(Bitu port,Bitu val,Bitu iolen) {
|
||||
};
|
||||
}
|
||||
|
||||
void pc98_update_digpal(unsigned char ent) {
|
||||
unsigned char grb = pc98_pal_digital[ent];
|
||||
|
||||
vga.dac.rgb[ent].green = (grb & 4) ? 0x3F : 0x00;
|
||||
vga.dac.rgb[ent].red = (grb & 2) ? 0x3F : 0x00;
|
||||
vga.dac.rgb[ent].blue = (grb & 1) ? 0x3F : 0x00;
|
||||
VGA_DAC_UpdateColor(ent);
|
||||
}
|
||||
|
||||
void pc98_set_digpal_entry(unsigned char ent,unsigned char grb) {
|
||||
pc98_pal_digital[ent] = grb;
|
||||
|
||||
if (!gdc_analog)
|
||||
pc98_update_digpal(ent);
|
||||
}
|
||||
|
||||
void pc98_set_digpal_pair(unsigned char start,unsigned char pair) {
|
||||
/* assume start 0..3 */
|
||||
pc98_set_digpal_entry(start, pair >> 4);
|
||||
pc98_set_digpal_entry(start+4,pair & 0xF);
|
||||
}
|
||||
|
||||
unsigned char pc98_get_digpal_pair(unsigned char start) {
|
||||
return (pc98_pal_digital[start] << 4) + pc98_pal_digital[start+4];
|
||||
}
|
||||
|
||||
void pc98_wait_write(Bitu port,Bitu val,Bitu iolen) {
|
||||
unsigned int wait_cycles = (unsigned int)(CPU_CycleMax * 0.0006); /* 0.6us = 0.0006ms */
|
||||
|
||||
|
76
src/hardware/vga_pc98_dac.cpp
Normal file
76
src/hardware/vga_pc98_dac.cpp
Normal file
@ -0,0 +1,76 @@
|
||||
|
||||
#include "dosbox.h"
|
||||
#include "setup.h"
|
||||
#include "video.h"
|
||||
#include "pic.h"
|
||||
#include "vga.h"
|
||||
#include "inout.h"
|
||||
#include "programs.h"
|
||||
#include "support.h"
|
||||
#include "setup.h"
|
||||
#include "timer.h"
|
||||
#include "mem.h"
|
||||
#include "util_units.h"
|
||||
#include "control.h"
|
||||
#include "pc98_cg.h"
|
||||
#include "pc98_dac.h"
|
||||
#include "pc98_gdc.h"
|
||||
#include "pc98_gdc_const.h"
|
||||
#include "mixer.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
#include <stdio.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
uint32_t pc98_text_palette[8];
|
||||
uint8_t pc98_16col_analog_rgb_palette_index = 0;
|
||||
|
||||
uint8_t pc98_pal_analog[256*3]; /* G R B 0x0..0xF */
|
||||
uint8_t pc98_pal_digital[8]; /* G R B 0x0..0x7 */
|
||||
|
||||
void pc98_update_palette(void) {
|
||||
if (pc98_gdc_vramop & (1 << VOPBIT_ANALOG)) {
|
||||
for (unsigned int i=0;i < 16;i++) {
|
||||
vga.dac.rgb[i].green = dac_4to6(pc98_pal_analog[(3*i) + 0]&0xF); /* re-use VGA DAC */
|
||||
vga.dac.rgb[i].red = dac_4to6(pc98_pal_analog[(3*i) + 1]&0xF); /* re-use VGA DAC */
|
||||
vga.dac.rgb[i].blue = dac_4to6(pc98_pal_analog[(3*i) + 2]&0xF); /* re-use VGA DAC */
|
||||
VGA_DAC_UpdateColor(i);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (unsigned int i=0;i < 8;i++) {
|
||||
pc98_update_digpal(i);
|
||||
VGA_DAC_UpdateColor(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void pc98_update_digpal(unsigned char ent) {
|
||||
unsigned char grb = pc98_pal_digital[ent];
|
||||
|
||||
vga.dac.rgb[ent].green = (grb & 4) ? 0x3F : 0x00;
|
||||
vga.dac.rgb[ent].red = (grb & 2) ? 0x3F : 0x00;
|
||||
vga.dac.rgb[ent].blue = (grb & 1) ? 0x3F : 0x00;
|
||||
VGA_DAC_UpdateColor(ent);
|
||||
}
|
||||
|
||||
void pc98_set_digpal_entry(unsigned char ent,unsigned char grb) {
|
||||
pc98_pal_digital[ent] = grb;
|
||||
|
||||
if (!gdc_analog)
|
||||
pc98_update_digpal(ent);
|
||||
}
|
||||
|
||||
void pc98_set_digpal_pair(unsigned char start,unsigned char pair) {
|
||||
/* assume start 0..3 */
|
||||
pc98_set_digpal_entry(start, pair >> 4);
|
||||
pc98_set_digpal_entry(start+4,pair & 0xF);
|
||||
}
|
||||
|
||||
unsigned char pc98_get_digpal_pair(unsigned char start) {
|
||||
return (pc98_pal_digital[start] << 4) + pc98_pal_digital[start+4];
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user