]> Shamusworld >> Repos - apple2/commitdiff
Fixed double hires to have correct colors; fixed LC alt bank access.
authorShamus Hammons <jlhamm@acm.org>
Thu, 19 Sep 2013 02:32:56 +0000 (21:32 -0500)
committerShamus Hammons <jlhamm@acm.org>
Thu, 19 Sep 2013 02:32:56 +0000 (21:32 -0500)
src/apple2.cpp
src/applevideo.cpp
src/v65c02.cpp

index 572d758c7f2580c7717febf1ea04ca9177f19127..12eb8c92181d9263bebb61435e5d0e13778bad51 100755 (executable)
@@ -750,8 +750,8 @@ if (showpath)
 #ifdef LC_DEBUGGING
                        {
 #endif
-                               b = ram[addr - 0x1000];
-//                             b = (ramrd ? ram2[addr - 0x1000] : ram[addr - 0x1000]);
+//                             b = ram[addr - 0x1000];
+                               b = (altzp ? ram2[addr - 0x1000] : ram[addr - 0x1000]);
 #ifdef LC_DEBUGGING
 if (showpath)
        WriteLog("b is from LC bank #1 (ram[addr - 0x1000])...\n");
@@ -761,8 +761,8 @@ if (showpath)
 #ifdef LC_DEBUGGING
                        {
 #endif
-                               b = ram[addr];
-//                             b = (ramrd ? ram2[addr] : ram[addr]);
+//                             b = ram[addr];
+                               b = (altzp ? ram2[addr] : ram[addr]);
 #ifdef LC_DEBUGGING
 if (showpath)
        WriteLog("b is from LC bank #2 (ram[addr])...\n");
@@ -782,7 +782,6 @@ if (showpath)
        }
        else
        {
-#if 1
                // Check for 80STORE mode (STORE80 takes precedence over RAMRD/WRT)...
                if ((((addr >= 0x0400) && (addr <= 0x07FF)) || ((addr >= 0x2000) && (addr <= 0x3FFF))) && store80Mode)
                {
@@ -795,20 +794,10 @@ if (showpath)
                }
 
                // Finally, check for auxillary/altzp write switches
-#endif
                if (addr < 0x0200)
                        b = (altzp ? ram2[addr] : ram[addr]);
                else
                        b = (ramrd ? ram2[addr] : ram[addr]);
-//             if (ramrd)
-//                     b = ram2[addr];
-//             else
-//             {
-//                     if (altzp)
-//                             b = ram2[addr];
-//                     else
-//                             b = ram[addr];
-//             }
 #ifdef LC_DEBUGGING
 if (showpath)
        WriteLog("b is from ram[addr]...\n");
@@ -1263,7 +1252,7 @@ if (addr >= 0xD000 && addr <= 0xD00F)
        {
                if (writeRAM)
                {
-#if 1
+#if 0
                        if (addr <= 0xDFFF && visibleBank == LC_BANK_1)
                                ram[addr - 0x1000] = b;
                        else
@@ -1271,14 +1260,14 @@ if (addr >= 0xD000 && addr <= 0xD00F)
 #else
                        if (addr <= 0xDFFF && visibleBank == LC_BANK_1)
                        {
-                               if (ramwrt)
+                               if (altzp)
                                        ram2[addr - 0x1000] = b;
                                else
                                        ram[addr - 0x1000] = b;
                        }
                        else
                        {
-                               if (ramwrt)
+                               if (altzp)
                                        ram2[addr] = b;
                                else
                                        ram[addr] = b;
@@ -1313,6 +1302,7 @@ if (addr >= 0xD000 && addr <= 0xD00F)
        }
 #else
        if (addr < 0x0200)
+//     if (addr < 0x0200 || addr >= 0xD000)
        {
                if (altzp)
                        ram2[addr] = b;
index d3060bf96719278c9128fbb1f2706d12eb1c4f46..9dc8d89fefa55ffff2e644913a2593bac73ac368 100755 (executable)
@@ -797,21 +797,15 @@ static void RenderHiRes(uint16_t toLine/*= 192*/)
 
 static void RenderDHiRes(uint16_t toLine/*= 192*/)
 {
-// NOTE: Not endian safe. !!! FIX !!! [DONE]
-#if 0
-       uint32_t pixelOn = (screenType == ST_WHITE_MONO ? 0xFFFFFFFF : 0xFF61FF61);
-#else
 // Now it is. Now roll this fix into all the other places... !!! FIX !!!
 // The colors are set in the 8-bit array as R G B A
        uint8_t monoColors[8] = { 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0xFF, 0x61, 0xFF };
        uint32_t * colorPtr = (uint32_t *)monoColors;
        uint32_t pixelOn = (screenType == ST_WHITE_MONO ? colorPtr[0] : colorPtr[1]);
-#endif
 
        for(uint16_t y=0; y<toLine; y++)
        {
-               uint16_t previousLoPixel = 0;
-               uint32_t previous3bits = 0;
+               uint32_t previous4bits = 0;
 
                for(uint16_t x=0; x<40; x+=2)
                {
@@ -823,7 +817,7 @@ static void RenderDHiRes(uint16_t toLine/*= 192*/)
                        pixels = pixels | ((mirrorTable[screenByte & 0x7F]) << 21);
                        screenByte = ram2[lineAddrHiRes[y] + (displayPage2 ? 0x2000 : 0x0000) + x + 1];
                        pixels = pixels | ((mirrorTable[screenByte & 0x7F]) << 7);
-                       pixels = previous3bits | (pixels >> 1);
+                       pixels = previous4bits | (pixels >> 1);
 
                        // We now have 28 pixels (expanded from 14) in word: mask is $0F FF FF FF
                        // 0ppp 1111 1111 1111 1111 1111 1111 1111
@@ -833,18 +827,18 @@ static void RenderDHiRes(uint16_t toLine/*= 192*/)
                        {
                                for(uint8_t i=0; i<7; i++)
                                {
-                                       uint8_t bitPat = (pixels & 0x7F000000) >> 24;
+                                       uint8_t bitPat = (pixels & 0xFE000000) >> 25;
                                        pixels <<= 4;
 
                                        for(uint8_t j=0; j<4; j++)
                                        {
-                                               uint8_t color = blurTable[bitPat][j];
-                                               scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 0) * VIRTUAL_SCREEN_WIDTH)] = palette[color];
-                                               scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = palette[color];
+                                               uint32_t color = palette[blurTable[bitPat][j]];
+                                               scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 0) * VIRTUAL_SCREEN_WIDTH)] = color;
+                                               scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = color;
                                        }
                                }
 
-                               previous3bits = pixels & 0x70000000;
+                               previous4bits = pixels & 0xF0000000;
                        }
                        else
                        {
index e10006c969f0eeeb72122cad73ea4daf18c9ae65..6f383a3a5fdc1bc81571e711ca605bb89913257a 100755 (executable)
@@ -2946,6 +2946,21 @@ if (regs.pc == 0xD269)
        dumpDis = true;
 }//*/
 #endif
+//if (regs.pc == 0xE08E)
+/*if (regs.pc == 0xAD33)
+{
+       WriteLog("\n*** After loader ***\n\n");
+       dumpDis = true;
+}//*/
+/*if (regs.pc == 0x0418)
+{
+       WriteLog("\n*** CUSTOM DISK READ subroutine...\n\n");
+       dumpDis = false;
+}
+if (regs.pc == 0x0)
+{
+       dumpDis = true;
+}//*/
 #ifdef __DEBUGMON__
 //WAIT is commented out here because it's called by BELL1...
 if (regs.pc == 0xFCA8)