Giter VIP home page Giter VIP logo

fallout2-re's Introduction

Fallout 2 Reference Edition

In this repository you'll find reverse engineered source code for Fallout 2.

As a player/gamer you're most likely interested in Fallout 2 Community Edition which is based on this project.

If you're a developer you might also want to check Fallout Reference Edition to see evolution of the engine.

Goal

The goal of this project is to restore original source code as close possible with all it's imperfections. In very many respects this goal can be considered achieved.

Status

There is a small number of functions which are not yet decompiled. These functions are not essential to gameplay, most of them are leftovers from Fallout 1, others are a part of larger APIs that were not fully utilized. Aside from these missing functions there is ongoing effort to update the codebase to C89 to make sure the game can be compiled with Watcom C compiler (which might be handy to achieve binary identical results). This tasks are low priority and probably will never be completed.

Installation

You must own the game to play. Purchase your copy on GOG or Steam. Download latest build or build from source. The fallout2-re.exe serves as a drop-in replacement for fallout2.exe. Copy it to your Fallout 2 directory and run.

Legal

The source code in this repository is produced by reverse engineering the original binary. There are couple of exceptions for reverse engineering under DMCA - documentation, interoperability, fair use. Documentation is needed to achieve interoperability. Running your legally purchased copy on modern Mac M1 for example (interoperability in action) constitutes fair use. Publishing this stuff to wide audience is questionable. Eventually it's up to Bethesda/Microsoft to takedown the project or leave it be. See #29 for discussion.

License

The source code is this repository is available under the Sustainable Use License.

fallout2-re's People

Contributors

aetn23 avatar alexbatalov avatar alexeevdv avatar brcolow avatar c6-dev avatar ghost2238 avatar mrcool92 avatar wipe2238 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fallout2-re's Issues

Can attack with a weapon with both arms crippled

savegame -> SLOT03.zip

In vanilla if you try to attack with a weapon with both arms crippled it gives you a message about you not being able to and also disallows you the attack. In RE there's no message and also I can make the attack (in the savefile, switch to the spear).

New locations on the worldmap are revealed incorrectly

As an example, if you ask Jenny the bathgirl in Klamath for the location of Den, this is what you get

Vanilla:
fallout2_8zmTbxvBbn

Fallout2RE:
fallout2-re_FpxL3psAME

Same if you leave Arroyo, in vanilla you can see all 8 squares around Klamath, in Fallout2RE just the Klamath square. I assume it works that way everywhere.

AI doesn't draw weapons

SLOT04.zip

Seen it in a couple situations already. They have weapons in their inventory, but they don't use them. Sometimes the ai will not move at all due to this, other times they just attack unarmed.

/Edit: Sulik also doesn't pull out his weapon anymore.

Den map script issue

The map light in the Den won't update when resting (try waiting till night / day and see that nothing changes).

My guess is there is something wrong with map_update because if you exit the map and return, the daytime is back to normal.

Some random bugs

  • AP display in character generation doesn't refresh when changing agility.
  • Can't right click until combat cursor in combat mode. (worked when unarmed tho)
  • Critter speed in combat is not influenced by combat speed in the settings.
  • Villagers in Arroyo are scared of me and when talking to them float Error. Maybe something up with reading the karma / reputation values.

Cannot change new character gender

When creating new character, gender is always reset to default value, user changes are ignored

  • with "create character", it's always male
  • with premade Narg/Mingan and "modify", it's always male
  • with premade Chitsa and "modify", it's always female

Ghost Farm dialog issue

More script bugs:

SLOT01.zip

At first I wasn't able to talk to the people / the dialog wouldn't initiate, so I saved the game and reloaded -- then the dialog works. However, after picking "I surrender" and being transported to the Slags, the next dialog screen is fucked up and won't show correctly.

My guess is the dialog interface doesn't close correctly before the teleport, which is why the interface breaks on the creation of the next dialog.

Savegame corruption

SLOT01.zip

Use lockpicking on the door to the armory. You will be spotted and combat starts. Now reload the savegame -- the game will crash and the savegame is now corrupted.

Interesting side note: If you make multiple saves in the same location (e.g. in slot 1 and slot 2), both saves will get corrupted and won't load anymore.

Melee/Unarmed weapons don't have their aimed CTH penalties halved

Barehanded punches/kicks seem to be fine, but attacks with spears/knuckles/power fists/knives use CTH penalties as if they were ranged weapons. -60 for eyes -40 for head etc... I'd be also interesting to see whether this affects critical chance, but I think for that it would be easier to just look in the code.

I haven't tried all of the weapons, I assume it's just some mistake that generalizes to all of them?...

Getting low amount of XP for stealing, also possibly chance to be detected is lower

savegame -> https://icedrive.net/s/a9CgGiQ5iT4zx1Aavyi3ugyVNRz4

If I do 4 successful steal attempts in vanilla I get 100xp, in F2RE I'm getting only 40xp (the formula in RE seems to be just a simple multiplication).

Also it feels like I'm having a much easier time stealing/planting items. I do get detected occasionally, but it feels like it happens less often. Possibly there's some problem with the function where the subject of theft tries to detect if anyone is stealing from him?

Edit: Yep, I gave my character 300 steal skill and I can steal/plant the minigun with no problems.

Can't talk to certain NPCs

For some reason I can't talk to Mom. Nothing happens when trying to speak to her. Also the blue jeans Ian critter who is related to the ghost-quest can't be spoken to as well.

SLOT01.zip

Aimed attack allowed with Fast Shot

Spear, Sharpened Spear- Throw
Knife, Cattle Prod - Thrust
Throwing Knife - Swing

Looks like melee weapons are missing a check for secondary attack.

Looting critters from far away

Click on a dead critter to loot them -- player will walk over and inventory opens.

However, if you double click on the dead body fast, the inventory will open instantly, while the player is still far away.

You can test it with the dead bodies here:
SLOT04.zip

Some thoughts on existing symbols

First of all, awesome work! This looks like a very promising approach considering a lot of other successful engine reversing projects with a thriving community. The progress is already great.

I noticed some symbols not being named (random example): https://github.com/alexbatalov/fallout2-re/blob/main/src/game_dialog.c#L1806 which is known already as gdProcessChoice_

There's an IDA DB here: https://www.dropbox.com/s/tm0nyx0lnk4yui0/Fallout_1_and_2_IDA68.rar which contains a lot of info (from https://github.com/phobos2077/sfall), not sure if you've looked at it already.

Also, a collection of reversing docs: https://fodev.net/files/fo2
Call structure: https://rotators.fodev.net/atom/F2_function_structure.txt
Symbol (functions/globals) dump: https://fodev.net/files/fo2/symbols.html

I could take a look at writing some code to automatically rename/refactor most raw memory addresses to the already known names, at least as a first pass and contribute as pull requests.

Crash when using examine on damaged critter

Repro:

  1. Enter combat.
  2. Injure enemy a few HP until they are no longer "unhurt".
  3. Try to examine the critter, the game will crash with the message "Error: Can't find msg num!"

Crash is somewhere in proto_instance.c

Edit: Noticed that there were multiple possible code spots for crash.
Edit2: It's here: https://github.com/alexbatalov/fallout2-re/blob/main/src/proto_instance.c#L367-L371
Nitpicky sidenote, "hitPoitsMessageListItem" should probably be "hitPointsMessageListItem"

Using a clean Fallout 2 install from steam, with a local build that includes c7c6a4b

Save: SLOT01.zip

Enclave maze is buggy

savegame -> https://icedrive.net/s/44vBQ96gjWbZZBVkxBZ6fVFDxQQY

The electrical floor is not working. It does print the message of the floor discharging, but it doesn't actually deal any damage. Also some of the consoles are not opening doors like 2 (and maybe others). If the maze is:

1 2 3
4 5 6
7 8 9
10

then the classical path of 21237 -> take PA MKII -> 89 -> take GECK -> 10 is not working (because at the very least 2 is not working).

Edit: my bad, I meant that 1 is not working :)

Music / sfx stops

Every once in a while, either the music stops in my game, or certain sound effects won't play anymore (reloading weapons, missing hits, clicking on buttons).

Bad news is, I haven't found a 100% repro yet, so don't know what is causing this. However, it happens quite often and gets fixed with reloading a savegame.

QuickSave crash

After pressing F6 for a first time and selecting quicksave slot, pressing it for a second time (sometimes more) ends with crash.
Happens both when smashing F6 like crazy, and if there's a delay (like changing maps).

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.