Vampire Gold 2.8 FPU

Posted by ALB42 on 25. März 20183 Comments

During my vacation two new Versions of Vampire Cores are released. One (2.7.1) only adds more serial numbers so no actual core changes and the second (2.8) has some bugfixes. One Bugfix is called ‚- minor FPU fix‘, sadly no more information what that means. I heard the rounding issue is solved and MUIMapparium (FPU-Version) should work now, so let’s try that.

But sadly MUIMappaarium still shows nothing and that is because the rounding issue is still not solved in this core (as you see in the picture), also the the precision problem persists. So I’m not sure what they fixed in this version and what happened with the MUIMapparium fixes they showed before 🙁 More waiting.

3 comments to "Vampire Gold 2.8 FPU"

  1. aha sagt:

    The following is the answer from Gunnar on in German:

    „Zu Mapparium.
    1) Mapparium in der Integer variante läuft einwandfrei.
    2) Der FPU code in Mapparium rechnet auch richtig auf der Vampire
    und die FPU Variante läuft auch einwandfrei.

    Nur einzig ein Befehl tut das nicht.
    Der Befehl ROUND() in Mapparium schneidet ab.
    Da müsste nicht sein – wenn Mapparium ROUND richtig benutzen würde.
    Für ROUND() gibt es bei MOTOROLA einen echten FPU Assembler Befehl.
    Wenn das Pascal den echten MOTOROLA Befehl auch benutzen würde, dann wäre das Ergebnis auch völlig korrekt!
    Aber das macht Pascale nicht, es wird stattdessen ein Hack benutzt,
    der nicht die von Motorola vorgeschlage richtige Implementierung ist.
    Der Hack braucht dutzende extra Befehle und ist wesentlich langsamer und schneidet falsch ab.“

    • ALB42 sagt:

      Don’t listen to him, it’s just the usual crap he write this time. It’s a sign of a very bad character to write/talk down other peoples work to cover own bad decisions or let the own work look better.

      We (ChainQ and me) already tried to explain it to him some times.

      1) MUIMapparium has no way to use Round() wrong, because Round() is just a FreePascal function and MUIMapparium use that. You can Easily see that in the linked example code it’s just a Round() call. So he mix up the language with the application.

      2) Please look again to the FreePascal Round() function, please notice it rounds to a int64 (in c – long long, signed 64bit integer) there is NO Motorola 68k assembler command which rounds and convert a floating point to a signed 64bit integer. (the mentioned FINT just rounds value but the result stays float).
      Therefore the Round() function is a little bit longer and depend on bit exact IEEE 754 operations of every command. This routine works on 10+ other CPUs (including 68881/2, 68040/68060), but not on Vampire.
      These are the merits, if you think some points in a speed test or some frames per seconds more in Quake deserve a violation of the standards (IEEE 754) which are followed since >30 years by all Chip producers.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert