VOGONS

Common searches


Reply 200 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Minor update. Compatibility of PVGA1A should be significantly improved -- the old version did not have Paradise "VGA=" signature in memory. I was not sure if it was in 1A version. Apparently it was.

Reply 201 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

I've submitted a separate patch ("Dual-ported paged memory support") which is actually an important part (or foundation) of this patch. If that goes to CVS it will allow to remove a very bad coupling to CPU/memory core in this patch and make my life maintaining it an order of magnitude easier. I hope Qbix or somebody else will find some time to review and integrate it soon. If that happens, I will update this patch immediately.
EDIT: Also submitted very minor patch that reserves the first 256 bytes of VGA BIOS. It is rather independent change, easy to separate from the main patch. I've found that Paradise uses that area for chipset identification and it was not alone (Cirrus, Genoa, Ahead,...) The change is so simple that it might as well just be there.

Reply 204 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Updated the patch to match the current CVS. Removed an ugly hack that allowed VGA scrollers to work -- chain4 patch fixed those. I haven't enabled non-standard chain4 on Tseng chipset yet. There is a chance that I may be able to do some tests on real hardware so I can ensure that it is actually a right thing to do. I also need to know if non-standard chain4 did address wrap at 64K. Most likely it did, otherwise there are games that would break (example: Drive-In).

EDIT: Either the guy that wrote WHATVGA was crazy or Tseng chipsets did not limit memory to 64K in non-standard chain4 mode, in which case Tseng designers were crazy, and there were games that broke on ETx000 badly. Now I really need to do some tests on the real hardware.

Reply 205 of 343, by ykhwong

User metadata
Rank Oldbie
Rank
Oldbie

At the last process of compilation, an error occured.
Please fix it. (seems that you made a mistake during disabling chain4 mode (I don't know exactly why, thou).)

 -lSDL -mwindows -lpng -lz -lSDL_net -lopengl32 -lwinmm
ints/libints.a(int10.o)(.text+0x5f):int10.cpp: undefined reference to `INT10_EGA_RIL_F1(unsigned char&, unsigned char, unsigned short)'
collect2: ld returned 1 exit status
make[3]: *** [dosbox.exe] Error 1
make[3]: Leaving directory `/c/dosbox/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/c/dosbox/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/dosbox'
make: *** [all] Error 2

Reply 206 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Try again with new version. Two files got stuck from the last update and caused source code regression. Kind of persistent glitch in my process, stepped on it three times already. I guess it's time to fix the process.

Reply 209 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Don't worry. I am not native English speaker myself and I had my share of slips 😊
I've just updated the patch with new fixes for Tseng chipset implementation. I have real functioning hardware so I can test some of my assumptions. Well, ET4000 does have incompatible chain4; more, it allows access to more than 64K in chained mode 13h -- something that every book claims to be impossible. Playing with a few games I've got sufficient proof that ET3000 had compatible chain4 implementation, rather surprising turn of things. So, the patch works exactly like real hardware now.
I've also discovered that Drive-In actually detected ET4000 on real hardware. Apparently, it was checking for BIOS signature. Easy fix, also fixed New Age Warrior not seeing ET3000 properly -- another mystery solved.
I am very pleased with this change. It feels like a few last puzzle pieces clicked in place. Now I will see if I can improve performance in VGA/SVGA chain. Too much stuff is going there and my fixes did not make it any simpler.

Reply 210 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Another day, another update. This time resolving conflicts with my patch that improves chain4 implementation (as promised). There a few other minor fixes.
I've updated my process so from now on patch generation should be easier. Let me know if there are any issues with the patch. The process is not fully tested yet.

Reply 214 of 343, by cmw

User metadata
Rank Newbie
Rank
Newbie

No I mean if I apply the patch to the source and then try to build DosBox it will quit, same as above.

-lSDL -mwindows -lpng -lz -lSDL_net -lopengl32 -lwinmm
ints/libints.a(int10.o)(.text+0x5f):int10.cpp: undefined reference to `INT10_EGA_RIL_F1(unsigned char&, unsigned char, unsigned short)'
collect2: ld returned 1 exit status
make[3]: *** [dosbox.exe] Error 1
make[3]: Leaving directory `/c/dosbox/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/c/dosbox/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/dosbox'
make: *** [all] Error 2

Reply 215 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

I see. There may be some quiet conflict with the latest CVS. I was going to check it lately but for the past two days I cannot get anything from anon CVS. I will try again later today. Thanks for the report.

EDIT: The patch works fine with current CVS. That symbol (INT10_EGA_RIL_F1) was removed a while ago, neither current CVS nor patch as of 12/26 refers to it. Try getting fresh copy of source code, although it may be tricky -- anonymous CVS is not particularly healthy lately.

Reply 216 of 343, by `Moe`

User metadata
Rank Oldbie
Rank
Oldbie

And it's a good idea to issue a "make clean" after you have updated from CVS or applied a patch. This _should_ work automatically, but sometimes they don't.

Reply 217 of 343, by cmw

User metadata
Rank Newbie
Rank
Newbie

I sortet out the error. In the current CVS, the page handler class looks like this.

class PageHandler {
public:
virtual Bitu readb(PhysPt addr);
virtual Bitu readw(PhysPt addr);
virtual Bitu readd(PhysPt addr);
virtual void writeb(PhysPt addr,Bitu val);
virtual void writew(PhysPt addr,Bitu val);
virtual void writed(PhysPt addr,Bitu val);
virtual bool readb_checked(PhysPt addr, Bitu * val);
virtual bool readw_checked(PhysPt addr, Bitu * val);
virtual bool readd_checked(PhysPt addr, Bitu * val);
virtual bool writeb_checked(PhysPt addr,Bitu val);
virtual bool writew_checked(PhysPt addr,Bitu val);
virtual bool writed_checked(PhysPt addr,Bitu val);
virtual HostPt GetHostPt(Bitu phys_page);
Bitu flags;
};

However, the diff file does think that the virtual HostPT should be right after the void stuff (and the the bools shouldn't be there at all).

So I changed the part of the file by hand, it now looks like this:

class PageHandler {
public:
virtual Bitu readb(PhysPt addr);
virtual Bitu readw(PhysPt addr);
virtual Bitu readd(PhysPt addr);
virtual bool readb_checked(PhysPt addr, Bitu * val);
virtual bool readw_checked(PhysPt addr, Bitu * val);
virtual bool readd_checked(PhysPt addr, Bitu * val);
virtual bool writeb_checked(PhysPt addr,Bitu val);
virtual bool writew_checked(PhysPt addr,Bitu val);
virtual bool writed_checked(PhysPt addr,Bitu val);
virtual void writeb(PhysPt addr,Bitu val);
virtual void writew(PhysPt addr,Bitu val);
virtual void writed(PhysPt addr,Bitu val);
virtual HostPt GetHostReadPt(Bitu phys_page);
virtual HostPt GetHostWritePt(Bitu phys_page);
Bitu flags;
};

It now compiles where an error would occur before, but much later, there is another error which I cannot figure out:

hardware/libhardware.a(vga.o)(.text+0xf7): In function `Z17VGA_DetermineModev':
c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga.cpp:54: undefined reference to `VGA_DetermineMode_SVGA()'
hardware/libhardware.a(vga.o)(.text+0x41a): In function `Z8VGA_InitP7Section':
c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga.cpp:165: undefined reference to `SVGA_Init(Section*)'
hardware/libhardware.a(vga.o)(.text+0x453):c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga.cpp:175: undefined reference to `VGA_SetupSVGA()'
hardware/libhardware.a(vga_attr.o)(.text+0x29c): In function `Z13VGA_SetupAttrv':
c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga_attr.cpp:193: undefined reference to `VGA_SetupAttr_SVGA()'
hardware/libhardware.a(vga_seq.o)(.text+0x2da): In function `Z12VGA_SetupSEQv':
c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga_seq.cpp:191: undefined reference to `VGA_SetupSEQ_SVGA()'
hardware/libhardware.a(vga_gfx.o)(.text+0x24a): In function `Z12VGA_SetupGFXv':
c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga_gfx.cpp:220: undefined reference to `VGA_SetupGFX_SVGA()'
hardware/libhardware.a(vga_misc.o)(.text+0x34b): In function `Z10write_p3c2jjj':
c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga_misc.cpp:74: undefined reference to `VGA_SetupCRTC_SVGA(unsigned int)'
hardware/libhardware.a(vga_misc.o)(.text+0x35c):c:/unixshell/dosbox/dosbox-cvs/src/hardware/vga_misc.cpp:58: undefined reference to `VGA_SetupCRTC_SVGA(unsigned int)'
ints/libints.a(int10_modes.o)(.text+0x13ed): In function `Z18INT10_SetVideoModej':
c:/unixshell/dosbox/dosbox-cvs/src/ints/int10_modes.cpp:891: undefined reference to `FinishSetMode_SVGA(VGA_ModeExtraData*)'
ints/libints.a(int10_modes.o)(.text+0x1d0d): In function `Z15SetupVideoModesv':
c:/unixshell/dosbox/dosbox-cvs/src/ints/int10_modes.cpp:933: undefined reference to `SetupVideoModesSVGA()'
collect2: ld returned 1 exit status
make[3]: *** [dosbox.exe] Error 1
make[3]: Leaving directory `/c/unixshell/dosbox/dosbox-cvs/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/c/unixshell/dosbox/dosbox-cvs/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/unixshell/dosbox/dosbox-cvs'
make: *** [all] Error 2

What's that stuff? oO

best regards, cmw

Reply 218 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

I've updated the patch so paging.* should not give you any more troubles. The other set of errors looks like you don't have project files patched properly or your patch program does not understand that it needs to create a new file. Make sure that hardware/vga_svga.h and .cpp exist after patching. Also, make sure that makefile.am files get patched properly.

Reply 219 of 343, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

I can see that Harekiet just commited a major change to CVS. 😁 The current version of this patch is not compatible with that particular change for a good reason. Don't worry, I will update the patch in the next few days. The change actually includes some functionality previously available only in this patch. Some parts of the change are structurally similar to the patch changes. The next version of the patch will likely be much simpler and cleaner due to that. Stay tuned.

EDIT: Sort of progress report. Got about 60% of the first pass. It is quite ugly -- my patch is rather big and most of patched spots changed so I have to go through all that manually. On the positive side, already found a few small bugs 😉 I hope to get it up and running by the end of the week if nothing unexpected surfaces. There are some bad news as well: there will be regressions all over the place. I am seeing crashes and "imperfections" in WHATVGA with CVS code right now. I will try to fix those as I go through (likely, with small separate patches) but there is good round of testing ahead.