- Joined
- Jan 18, 2010
- Messages
- 11,421
Has Quake been tested?
Well there are native linux ports, so I guess the demand to try the DOS version isn't high.
Has Quake been tested?
Well there are native linux ports, so I guess the demand to try the DOS version isn't high.
Index: src/fpu/fpu_instructions.h
===================================================================
--- src/fpu/fpu_instructions.h (revision 3955)
+++ src/fpu/fpu_instructions.h (working copy)
@@ -16,8 +16,9 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+static FPU_Reg hackfpu_fregs[9];
+static FPU_Reg hackfpu_iregs[9];
-
static void FPU_FINIT(void) {
FPU_SetCW(0x37F);
fpu.sw = 0;
@@ -96,8 +97,8 @@
} test;
test.eind.l.lower = mem_readd(addr);
test.eind.l.upper = mem_readd(addr+4);
- test.begin = mem_readw(addr+8);
-
+ test.begin = mem_readw(addr+8);
+
Bit64s exp64 = (((test.begin&0x7fff) - BIAS80));
Bit64s blah = ((exp64 >0)?exp64:-exp64)&0x3ff;
Bit64s exp64final = ((exp64 >0)?blah:-blah) +BIAS64;
@@ -170,9 +171,9 @@
static void FPU_FLD_I64(PhysPt addr,Bitu store_to) {
FPU_Reg blah;
- blah.l.lower = mem_readd(addr);
- blah.l.upper = mem_readd(addr+4);
- fpu.regs[store_to].d = static_cast<Real64>(blah.ll);
+ blah.l.lower = hackfpu_iregs[store_to].l.lower = mem_readd(addr);
+ blah.l.upper = hackfpu_iregs[store_to].l.upper = mem_readd(addr+4);
+ fpu.regs[store_to].d = hackfpu_fregs[store_to].d = static_cast<Real64>(blah.ll);
}
static void FPU_FBLD(PhysPt addr,Bitu store_to) {
@@ -240,9 +241,17 @@
static void FPU_FST_I64(PhysPt addr) {
FPU_Reg blah;
- blah.ll = static_cast<Bit64s>(FROUND(fpu.regs[TOP].d));
- mem_writed(addr,blah.l.lower);
- mem_writed(addr+4,blah.l.upper);
+ if (hackfpu_fregs[TOP].ll == fpu.regs[TOP].ll)
+ {
+ mem_writed(addr,hackfpu_iregs[TOP].l.lower);
+ mem_writed(addr+4,hackfpu_iregs[TOP].l.upper);
+ }
+ else
+ {
+ blah.ll = static_cast<Bit64s>(FROUND(fpu.regs[TOP].d));
+ mem_writed(addr,blah.l.lower);
+ mem_writed(addr+4,blah.l.upper);
+ }
}
static void FPU_FBST(PhysPt addr) {
@@ -357,6 +366,13 @@
fpu.regs[other] = fpu.regs[st];
fpu.tags[st] = tag;
fpu.regs[st] = reg;
+
+ reg = hackfpu_iregs[other];
+ hackfpu_iregs[other] = hackfpu_iregs[st];
+ hackfpu_iregs[st] = reg;
+ reg = hackfpu_fregs[other];
+ hackfpu_fregs[other] = hackfpu_fregs[st];
+ hackfpu_fregs[st] = reg;
}
static void FPU_FST(Bitu st, Bitu other){
First and foremost thanks for working on this. On to some recommendations for you, or anyone else who'd like to try:Anyone got anything they'd like me to test?
What went wrong? I'd love if you'd try this one again once you have a proper set-up; I'm interested if the screen size and controls, especially the analog nubs, work for this game. Provided it runs, or could run, smoothly in the first place.I did have a TIE Fighter video too but yeah it was pretty crappy.
If it's the DOS version of Tomb Raider, it can be ran with DOSBox.Doesn't Tomb Raider 1 use dosbox?
Cool. I love those games.If it's the DOS version of Tomb Raider, it can be ran with DOSBox.