Giter Site home page Giter Site logo

henne / bright-eyes Goto Github PK

View Code? Open in Web Editor NEW
19.0 19.0 8.0 19.78 MB

"Bright Eyes" is a variation of DOSBox with customized support for the CRPG "Das schwarze Auge 1 - Schicksalsklinge"

License: GNU General Public License v2.0

Shell 0.27% C++ 71.47% C 25.63% NSIS 0.10% Perl 0.02% HTML 0.13% Assembly 1.81% Python 0.04% Batchfile 0.16% Makefile 0.21% M4 0.16%

bright-eyes's People

Contributors

hendrikr avatar mirbo avatar stephsc avatar tuxor1337 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bright-eyes's Issues

traveling times for ship passages

I think I found a bug. Not a bug in the original game (there are many), but a bug in BrightEyes where the game behaves differently than the original one.

In BrightEyes, it occasionally happens that a sea passage is announced with a traveling time of 0 hours, which never happened to me in the original game. I observed that in these situations, negative numbers do show up in the computations in the function get_passage_travel_hours(..) in seg063.cpp. By trial and error, I was able to fix this in my fork. However, I don't understand what the real problem is and I would like to have a better understanding. It seems that BCC and gcc are interpreting some type cast in an incompatible way.

Also, I find this a bit scary. We trust BrightEyes in exactly reproducing the original game since BCC produces the same machine code from the BrightEyes C code. But as we've seen, it might happen that gcc has a different interpretation of the C code. Are there more places like this? It would be great to have an automated way to scan the BrightEyes code for potentially problematic places.

There is a second incompatibility concerning sea traveling times. In the original game, sometimes super slow passage times show up. People have witnessed announcements of 210 hours (route Prem-Hjalsingor), and real in-game traveling times of about 2 weeks, see the discussion around this post. In BrightEyes, I've never seen these excessively slow ship passages.
I've studied the BrightEyes code for the sea travel times quite a bit. As a conclusion, the highest possible announced travel time for Prem-Hjalsingor should be 70 hours. It might well be possible that the BrightEyes behavior is the one which was originally intended by the Attic programmers, and that the super slow ships are the result of a (typecasting?) bug. But of course, this buggy behavior should be reproduced by BrightEyes.
I've stared quite some time at the code to guess the potential source of this incompatibility, but to no avail so far. Maybe someone with better low level debugging skills might help me out ? (By looking at the development of the exact memory content during the computation of the travel times, once in the original game and once in BrightEyes...)

Original-Bug: Compass disappeares

The compass does not get drawn, when a game is loaded from a temple and the savegame is in a dungeon.

If the savegame is in a city it works correct.
If the savegame is reloaded from within the dungeon, it works correct, too.

Bright Eyes: SDL.dll wrong?

The SDL.dll in the archive is different from the SDL.dll from the Heldenedition (297 KB compared to the original 438 KB).

As a consequence there seems to be an issue with number pad inputs: All number inputs are not shown correctly and not interpreted correctly, see screenshot where I actually typed in "10" but nothing is shown - even no underscores.

zahlweg

Tested under Windows 7 64bit.

Original-Bug: get_random_hero() can loop forever

The function get_random_hero() can loop forever, if all positions of the current group heros are greater than the number of heros in the group.

It can best figured out with one hero who is not in the first position.
If you walk through the city and trigger a city event (Thorwal 1%) you often get this endless loop.

saving in gen105

in gen105_seg002 update_hero_out() Zeile 1336
ersetze hero.attribs[0] durch hero.attribs[i]
for (i = 0; i < 14; i++) {
hero_writeb(0x1360 + i * 3 + 0, hero.attribs[0].normal);
hero_writeb(0x1360 + i * 3 + 1, hero.attribs[0].current);
hero_writeb(0x1360 + i * 3 + 2, hero.attribs[0].mod);
}

in gen105_seg002 save_chr() Zeile 2464
ersetze "w+" durch "wb" (oder "w+") um willkürliche Zeilenumbrüche zu verhindern.
/* here originally creat() was used */
fd = fopen(filename, "w+");

access to status bits

in v302de.h, there are functions for reading hero/monster status bits, like hero_dead(...). However, I cannot find functions for setting status bits. Is there a reason for this? It would be much nicer to have hero_unset_dead(hero) instead of and_ptr_bs(hero + HERO_STATUS1, 0xfe)

Thank you!

Bright Eyes character generation stores CHR files in wrong directory

all new generated chars are not saved in the "DSA1 folder" but in the folder where the DOSBox.exe file is located.
In the game the new generated chars cannot be imported into the game.

Also the created CHR file has a different file size: 1757 bytes compared to 1754 bytes.

Tested under Windows 7 64bit.

Original-Bug: invalid number of items

DSA1 has a field to count the number of items a hero has.
This number gets out of sync and may result in crashes, when the savegame is imported in DSA2.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.