|
|
| version 1.1.1.1, 2003/10/16 17:58:17 | version 1.4, 2003/12/09 15:49:14 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "scrnmng.h" | |
| #include "memory.h" | #include "memory.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "scrndraw.h" | |
| #include "vram.h" | #include "vram.h" |
| #include "scrndraw.h" | |
| #include "dispsync.h" | |
| #include "palettes.h" | |
| #include "maketext.h" | #include "maketext.h" |
| #include "maketgrp.h" | #include "maketgrp.h" |
| #include "makegrph.h" | #include "makegrph.h" |
| #include "makegrph.mcr" | |
| #include "font.h" | #include "font.h" |
| #include "dispsync.h" | #include "makegrph.mcr" |
| #include "palettes.h" | |
| // extern int displaymoder; | // extern int displaymoder; |
| Line 89 void maketextgrph(int plane, int text_re | Line 88 void maketextgrph(int plane, int text_re |
| } | } |
| m_pitch = gdc.m.para[GDC_PITCH] & 0xfe; | m_pitch = gdc.m.para[GDC_PITCH] & 0xfe; |
| esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL); | esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL)); |
| esi &= 0xfff; | |
| m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2); | m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2); |
| m_scr = (m_scr >> 4) & 0x3ff; | m_scr = LOW14(m_scr) >> 4; |
| m_scrp = 0; | m_scrp = 0; |
| s_pitch = gdc.s.para[GDC_PITCH]; | s_pitch = gdc.s.para[GDC_PITCH]; |
| Line 101 void maketextgrph(int plane, int text_re | Line 99 void maketextgrph(int plane, int text_re |
| } | } |
| s_pitch &= 0xfe; | s_pitch &= 0xfe; |
| ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL); | ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL); |
| ebp = (ebp << 1) & 0x7ffe; | ebp = LOW15(ebp << 1); |
| s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + 2); | s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + 2); |
| s_scr = (s_scr >> 4) & 0x3ff; | s_scr = LOW14(s_scr) >> 4; |
| s_scrp = 0; | s_scrp = 0; |
| s_scrpmask = (np2cfg.uPD72020)?0x4:0xc; | s_scrpmask = (np2cfg.uPD72020)?0x4:0xc; |
| Line 121 void maketextgrph(int plane, int text_re | Line 119 void maketextgrph(int plane, int text_re |
| if (!s_scr) { | if (!s_scr) { |
| s_scrp = (s_scrp + 4) & s_scrpmask; | s_scrp = (s_scrp + 4) & s_scrpmask; |
| ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); | ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); |
| ebp = (ebp << 1) & 0x7ffe; | ebp = LOW15(ebp << 1); |
| s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + | s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + |
| s_scrp + 2); | s_scrp + 2); |
| s_scr = (s_scr >> 4) & 0x3ff; | s_scr = LOW14(s_scr) >> 4; |
| } | } |
| else { | else { |
| ebp = (ebp + s_pitch) & 0x7fff; | ebp = LOW15(ebp + s_pitch); |
| } | } |
| } | } |
| else { | else { |
| Line 165 void maketextgrph(int plane, int text_re | Line 163 void maketextgrph(int plane, int text_re |
| new_flag = 1; | new_flag = 1; |
| break; | break; |
| } | } |
| edi = (edi + 1) & 0xfff; | edi = LOW12(edi + 1); |
| } | } |
| } | } |
| edi = esi; | edi = esi; |
| for (x=0; x<TEXTXMAX; x++) { // width80 | for (x=0; x<TEXTXMAX; x++) { // width80 |
| color[x] = (mem[0xa2000 + edi*2] & (TEXTATR_RGB)) >> 5; | color[x] = (mem[0xa2000 + edi*2] & (TEXTATR_RGB)) >> 5; |
| edi = (edi+1) & 0x0fff; // width80 | edi = LOW12(edi + 1); // width80 |
| } | } |
| esi = (esi + m_pitch) & 0x0fff; | esi = LOW12(esi + m_pitch); |
| } | } |
| if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) { | if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) { |
| Line 194 void maketextgrph(int plane, int text_re | Line 192 void maketextgrph(int plane, int text_re |
| grph_new = 1; | grph_new = 1; |
| break; | break; |
| } | } |
| vc = (vc + 1) & 0x7fff; | vc = LOW15(vc + 1); |
| } | } |
| } | } |
| } | } |
| Line 207 void maketextgrph(int plane, int text_re | Line 205 void maketextgrph(int plane, int text_re |
| for (x=0; x<TEXTXMAX; x++) { | for (x=0; x<TEXTXMAX; x++) { |
| GRPHDATASET(p, vc); | GRPHDATASET(p, vc); |
| p += 2; | p += 2; |
| vc = VRAM_POS(vc + 1); | vc = VRAMADDRMASKEX(vc + 1); |
| } | } |
| d = (BYTE *)bit; | d = (BYTE *)bit; |
| ZeroMemory(q, TEXTXMAX * 8); | ZeroMemory(q, TEXTXMAX * 8); |
| Line 232 void maketextgrph(int plane, int text_re | Line 230 void maketextgrph(int plane, int text_re |
| m_scr--; | m_scr--; |
| if (!m_scr) { | if (!m_scr) { |
| m_scrp = (m_scrp + 4) & 0x0c; | m_scrp = (m_scrp + 4) & 0x0c; |
| esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp); | esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp)); |
| esi &= 0xfff; | |
| m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp + 2); | m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp + 2); |
| m_scr = (m_scr >> 4) & 0x3ff; | m_scr = LOW14(m_scr) >> 4; |
| reloadline = TRUE; | reloadline = TRUE; |
| } | } |
| if (!GRPH_LRcnt) { | if (!GRPH_LRcnt) { |
| Line 244 void maketextgrph(int plane, int text_re | Line 241 void maketextgrph(int plane, int text_re |
| if (!s_scr) { | if (!s_scr) { |
| s_scrp = (s_scrp + 4) & s_scrpmask; | s_scrp = (s_scrp + 4) & s_scrpmask; |
| ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); | ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); |
| ebp = (ebp << 1) & 0x7ffe; | ebp = LOW15(ebp << 1); |
| s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + | s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + |
| s_scrp + 2); | s_scrp + 2); |
| s_scr = (s_scr >> 4) & 0x3ff; | s_scr = LOW14(s_scr) >> 4; |
| } | } |
| else { | else { |
| ebp = (ebp + s_pitch) & 0x7fff; | ebp = LOW15(ebp + s_pitch); |
| } | } |
| } | } |
| else { | else { |
| Line 349 void maketextgrph40(int plane, int text_ | Line 346 void maketextgrph40(int plane, int text_ |
| } | } |
| m_pitch = gdc.m.para[GDC_PITCH] & 0xfe; | m_pitch = gdc.m.para[GDC_PITCH] & 0xfe; |
| esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL); | esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL)); |
| esi &= 0xfff; | |
| m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2); | m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + 2); |
| m_scr = (m_scr >> 4) & 0x3ff; | m_scr = LOW14(m_scr) >> 4; |
| m_scrp = 0; | m_scrp = 0; |
| s_pitch = gdc.s.para[GDC_PITCH]; | s_pitch = gdc.s.para[GDC_PITCH]; |
| Line 361 void maketextgrph40(int plane, int text_ | Line 357 void maketextgrph40(int plane, int text_ |
| } | } |
| s_pitch &= 0xfe; | s_pitch &= 0xfe; |
| ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL); | ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL); |
| ebp = (ebp << 1) & 0x7ffe; | ebp = LOW15(ebp << 1); |
| s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + 2); | s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + 2); |
| s_scr = (s_scr >> 4) & 0x3ff; | s_scr = LOW14(s_scr) >> 4; |
| s_scrp = 0; | s_scrp = 0; |
| s_scrpmask = (np2cfg.uPD72020)?0x4:0xc; | s_scrpmask = (np2cfg.uPD72020)?0x4:0xc; |
| Line 381 void maketextgrph40(int plane, int text_ | Line 377 void maketextgrph40(int plane, int text_ |
| if (!s_scr) { | if (!s_scr) { |
| s_scrp = (s_scrp + 4) & s_scrpmask; | s_scrp = (s_scrp + 4) & s_scrpmask; |
| ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); | ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); |
| ebp = (ebp << 1) & 0x7ffe; | ebp = LOW15(ebp << 1); |
| s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + | s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + |
| s_scrp + 2); | s_scrp + 2); |
| s_scr = (s_scr >> 4) & 0x3ff; | s_scr = LOW14(s_scr) >> 4; |
| } | } |
| else { | else { |
| ebp = (ebp + s_pitch) & 0x7fff; | ebp = LOW15(ebp + s_pitch); |
| } | } |
| } | } |
| else { | else { |
| Line 425 void maketextgrph40(int plane, int text_ | Line 421 void maketextgrph40(int plane, int text_ |
| new_flag = 1; | new_flag = 1; |
| break; | break; |
| } | } |
| edi = (edi + 1) & 0xfff; | edi = LOW12(edi + 1); |
| } | } |
| } | } |
| edi = esi; | edi = esi; |
| for (x=0; x<TEXTXMAX/2; x++) { // width40 | for (x=0; x<TEXTXMAX/2; x++) { // width40 |
| color[x] = (mem[0xa2000 + edi*2] & (TEXTATR_RGB)) >> 5; | color[x] = (mem[0xa2000 + edi*2] & (TEXTATR_RGB)) >> 5; |
| edi = (edi+2) & 0x0fff; // width40 | edi = LOW12(edi + 2); // width40 |
| } | } |
| esi = (esi + m_pitch) & 0x0fff; | esi = LOW12(esi + m_pitch); |
| } | } |
| if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) { | if ((!TEXT_SDR) && (nowline >= topline + crtc.reg.ssl)) { |
| Line 454 void maketextgrph40(int plane, int text_ | Line 450 void maketextgrph40(int plane, int text_ |
| grph_new = 1; | grph_new = 1; |
| break; | break; |
| } | } |
| vc = (vc + 1) & 0x7fff; | vc = LOW15(vc + 1); |
| } | } |
| } | } |
| } | } |
| Line 467 void maketextgrph40(int plane, int text_ | Line 463 void maketextgrph40(int plane, int text_ |
| for (x=0; x<TEXTXMAX; x++) { | for (x=0; x<TEXTXMAX; x++) { |
| GRPHDATASET(p, vc); | GRPHDATASET(p, vc); |
| p += 2; | p += 2; |
| vc = VRAM_POS(vc + 1); | vc = VRAMADDRMASKEX(vc + 1); |
| } | } |
| d = (BYTE *)bit; | d = (BYTE *)bit; |
| ZeroMemory(q, TEXTXMAX * 8); | ZeroMemory(q, TEXTXMAX * 8); |
| Line 492 void maketextgrph40(int plane, int text_ | Line 488 void maketextgrph40(int plane, int text_ |
| m_scr--; | m_scr--; |
| if (!m_scr) { | if (!m_scr) { |
| m_scrp = (m_scrp + 4) & 0x0c; | m_scrp = (m_scrp + 4) & 0x0c; |
| esi = LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp); | esi = LOW12(LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp)); |
| esi &= 0xfff; | |
| m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp + 2); | m_scr = LOADINTELWORD(gdc.m.para + GDC_SCROLL + m_scrp + 2); |
| m_scr = (m_scr >> 4) & 0x3ff; | m_scr = LOW14(m_scr) >> 4; |
| reloadline = TRUE; | reloadline = TRUE; |
| } | } |
| if (!GRPH_LRcnt) { | if (!GRPH_LRcnt) { |
| Line 504 void maketextgrph40(int plane, int text_ | Line 499 void maketextgrph40(int plane, int text_ |
| if (!s_scr) { | if (!s_scr) { |
| s_scrp = (s_scrp + 4) & s_scrpmask; | s_scrp = (s_scrp + 4) & s_scrpmask; |
| ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); | ebp = LOADINTELWORD(gdc.s.para + GDC_SCROLL + s_scrp); |
| ebp = (ebp << 1) & 0x7ffe; | ebp = LOW15(ebp << 1); |
| s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + | s_scr = LOADINTELWORD(gdc.s.para + GDC_SCROLL + |
| s_scrp + 2); | s_scrp + 2); |
| s_scr = (s_scr >> 4) & 0x3ff; | s_scr = LOW14(s_scr) >> 4; |
| } | } |
| else { | else { |
| ebp = (ebp + s_pitch) & 0x7fff; | ebp = LOW15(ebp + s_pitch); |
| } | } |
| } | } |
| else { | else { |