User Tools

Site Tools


Current version: 0.8.5
iOS: 0.8.1+
Android: 0.8.5 (Play/Market version is obsolete!)

Github Coding has become social! Fork us!


Latest commit

# ideally, but does not work on sourceforge (does elsewhere); even http proxies don't help rss> 1 author 30m sidebar for frequently accessed stuff


Major todos

  • pst floating text, wrong stance ids, levelup fixes
  • polishing/finish of the opengl renderer, empty-frame-free animation system
  • proper timing (timestop partiality, actor speeds, combat)

While not a feature of the original engines, our mobile support also needs a lot of love. Plenty of chances to improve user experience and shorten installation. We're also looking for people to just run the build scripts for us! (a FIXME)

Right now there isn't even an idea if, when, or how multiplayer will be implemented.

Bugs/missing features

This is a list of problems which can be observed at various points throughout the games. If you want to get your hands dirty, the ones marked with FIXME are good starting points (easier tasks). If you want to help with testing, check the unresolved ones with RECHECK marks. The ones with RESEARCH require some data lookup in the originals. For details, talk to us on IRC/forums. is a list of original IE games (mostly data) bugs or quirks, for reference. Some are also noted here: not our bug. Apart from it, DSimpson guides for IE games are excellent.


  • Arrows sometimes appear from behind the shooter, usually observed when he has apr > 1 (see also combat section)
  • RESEARCH missing chunk coloring, full footstep sounds1), actor speed2), hit sounds and casting height data (all hardcoded in the originals3)), close afterwards
    • character speeds are therefore mostly too fast, especially in bg1 (also causing its boots of speed to have no effect 4))
  • no instachunks displayed when damaging petrified/frozen actors. RESEARCHWhich bam was used for this or for generating it?5)
  • Fog of war: fully visible squares with one corner neighbour invisible need alpha of the adjacent corner to the invisible square tuned down (uh, I hope it is clear what to do, look for artifacts in the fog of war edge)
  • animation speed should slow down for slowed actors
  • FIXME detailed combat feedback is missing (bg2: rolls, at least for saving throws + combat ones are harcoded)
    • combat rolls use 14643 (Attack roll) and 8715 (same for (Left)) as base everywhere, except for pst (19275); add them to strings.2da / ie_string*.h and use the named constant in construction of the final string (see fixme in Actor::PerformAttack)
    • RESEARCH figure out how Rolls/Combat Info/ACtions/State Changes/ ini settings were stored and used in the originals, use that variable, add the variable to the ini whitelist if necessary and add distinctions to the various feedback printers
  • RESEARCHthe dying animation is naked - any armor is stripped beforehand (is it different in originals?)
  • combat round timings are off: the times for weapons to launch and for animations to trigger and so forth re notes (initiative is the y coord, round timer x (combatcounter?))
    • tobex thread (iwd2: looks like one per attack count and one for launchers)
  • FEATURE: implement customisable combat calculation; it should be general enough to simulate all games, without any hardcoded parts


  • buggy State:Panic (still had orientation control (movement blocked though), no wandering[this bit was not tested, due to the panic being morale induced]).
  • berserking is also iffy (control sometimes returns, odd handling of the IE_STATE_ID states - do we do winded after the fact?)
  • intoxmod.2da handling and intoxication in general (curing by time; it's also modified by intoxcon.2da)
  • Various built-in engine projectile features don't work (eg, bouncing lightning, pst stuff) or are not perfect.
  • finish VEF support (first mod using it)
    • a SetSequence bugs become evident with that mod (see forum)
  • hardcoded overlays don't get removed on expiry (hc_ stuff; eg. from iwd fireshield or bg2 sanctuary)


  • RECHECKRESEARCH and determine if these two are in opposition
    • Pathfinding shouldn't be forcing the path to cells..
    • Move position of actor (and ground circle) to the center of a searchmap cell
  • friendly/neutral NPC bumping is missing (they magically move away if you want to pass them in a tight spot)
  • cutscenes, movies and interarea travel should switch to the main game view (mostly done)
  • (only bg1?) NPCs sound after initiating dialogue is not randomised. In bg1 VB_DIALOG is usually empty and INITIALMEET is equal to one of the selection sounds. After that, we only sound this normal selection one, while more are available in the rare range.
  • scripts changing (=deleting) themselves while running is not handled properly (changeaiscript)
  • RESEARCH (which scripts show this?) “(…)our script code is force-unlocking doors when it closes or opens them” That undermines all “surprisingly locked in” quasi trap scripts.
  • Characters will only walk along 45 degree paths (illustration: GemRB BG2 )


  • FIXME externalise message colors (iwd2 for example uses gold for xp, pst has them noted in pst_bugs)
  • optional newline stripping (Polish tlk vs month names in bg1; we added a special IE_STR_ flag for this, but it would require a tlk mod to apply it)
  • messaging system with filtering and delay capabilities
    • The text info in the inventory doesn't disappear when you click/do something else, making it difficult to work out exactly which items are causing the text. It also isn't filtered, so any message can be displayed.
    • messages while the inventory or the messagewindow are hidden should be delayed


  • FIXME add a post-startup dialog (ok/never show again) with instructions with the path to the log file in case of problems
  • since the label hack, portrait icons flicker and/or vanish
    • related iwd note, where this was seen first (now 3 labels): if icons count > 2 later ones (2nd and next) start to disappear from portrait, albeit stays in character sheet. sometimes there is padding for them, sometimes not, depending on timing of cumulating them.
  • implement grabbing mouse pointer by a control to fix dragging of PST Float menu window
  • implement or remove IE_GUI_BUTTON_ANIMATED (already defined and used for paperdolls, just no logic in core; at the same time we have working SetAnimation)
  • implement class based (customisable) actionbar. Port the IWD2 system everywhere
    • iwd2 customization is missing (in iwd2 as well)
    • rip the Setup*Icons calls from the python bindings and implement them in the GUIScripts (like killed SetupSpellIcons)
  • cancel in options does not really cancel, since we toggle stuff immediately
    • maybe add guiscript store/load gamevar functions, which we'd use like akin to transactions
  • if the windowing rewrite doesn't fix it automatically, add subwindow closing to the remaining guiscripts (eg. guiinv item desc, guipr, guima), so dialogs and cutscenes can close them


  • add a tile cache and don't preload all tiles6) (can save heaps of memory)
  • desensitivize portrait dragging (fast on pc too; FIXED in subviews branch)
    • it's too hard to target spells via portraits
  • Shapeshifted party members slow the game noticeably (especially if more than 1) - optimize
  • add sdl2_mixer support to the android build script (better performance but less features)
  • android: add native start-up menu for easier config/log access
  • sign up and check if this can do autobuilds of our android port


  • Add Doxygen doc comments to more objects
  • Write GemRB overview, structure and high-level flow docs (partly done)


  • missing support for nested stores (eg. opening a gem bag while already in a shop interface)
  • FIXME XDG compliance (standardised user paths on linux; icon location should already be fine)
  • FIXME You don't get door highlights (was that really there? ALT is used to highlight doors and containers) (yes, doors are definitely highlighted on tab) when hitting tab. It was light purple (red in iwd2) vs the blue that is used for containers.
  • a not-found resource cache/map, so we can shortcircuit repeated lookups of the same nonexisting data?
    • per-game 2da to list all the usual files not to complain about when they're missing; add to resource getter failure paths as filter? Could slow things down
  • FIXME keyboard shortcuts assignmnent to tooltips is missing for menu window (return to game, inventory …) tooltips/keys
  • implement and use as much from EAX (echo, damping, etc) as possible (iwd2 has some helpful 2das and ids)
  • The Cache and Variables classes could be rewritten to incorporate the release function more smoothly (use templates?)
  • RESEARCH spell effect volume (eg. magic missile hit) is often too loud, especially compared to gui sounds (same volume setting). We do play them differently, but this is audible even in sdlaudio, which has no spatial aspect to sounds (GEM_SND_RELATIVE). The files just have vastly different dbfs/gain (compare tra_22 and hit_07) and it looks like nothing in the acm header could be used to normalize. As far as wavc, there's only one field that's mostly the same, supposedly unused, that could perhaps be the marker. But it's also true that all trap/hit/release sounds are hardcoded in the exe, so perhaps it did something manually.
  • FIXME add a small test case to be ran on startup to check whether CaseSensitive should be set or not. Create a file and check if it is there, eg. create “FILE” and check for “FILE”. If it's not true, just quit, if it is, test if “FILE” is accessible as “file”. The name and location should be something nasty, so there's no chance of overlap.
  • the movie list shows all movies (due to the way config whitelisting works), but should only show those already played.
  • port to python3 by 2020, when python2 gets EOL-ed


  • mouse scroll scrollbar scrolling always scrolls up (RECHECK when view hierarchy work is merged)
  • FEATURE: sdl2 supports clipboards natively - implement pasting into the console on middle-click (if it's open)
  • set the wm icon(s) (visible in window title bar, alt-tab list)

Baldur's Gate 2

  • missing ToBEx stuff (see bottom of docs for concise bit info):
    • 4 weapon slots for everyone (see forum for partial diff), main inventory only
    • RECHECK Visual Effect Video Cells (VVCs)? (any missing bits?)
    • RESEARCH: Cure: Dispellable Effects (Dispel Magic) [58], Use EFF File [177], Spell Effect: Cast Spell on Condition [232]
  • the heuristic we use for the amount of learnable spells in cg/levelup is slightly wrong (needs splsrckn.2da like tables for wizards&bards, filled for all levels; mxspl*.2da is not helpful there)

Baldur's Gate

  • Viconia(?) animation problem [CharAnimations/ERROR]: Couldn't create animationfactory: cefc4 (6011) [ResourceManager/ERROR]: Couldn't find 'cefc4.bam'.
  • FIXME Remove invisible opcode (0x2f) should be disabled by nondetection, except if stateoverride(flag/time) is set.
  • RESEARCH Wrong sound effect played if no arrows left- same as no charge in wand. Which one should it be?
  • You can't travel from the Gnoll Stronghold to Wyrm's Crossing) RECHECKRESEARCH (also, was it possible in the original?)
  • Equipping BELT05 (Sex change) temporarily disrupts item's animation (SW1H24 (Flaming tongue) goes monochrome, shield disappears. Nasty bugger that can perhaps be fixed directly in the rendering code, with a non-pst EF_UPDATEANIM callback or some nicer way to update just the gear anims
  • Misaligned (?) Potion of Heroism (POTN09) use animation.
  • This is especially strange, it happens only in Taerom's shop (blackened scroll counter) 009 RECHECK / STILL Similar thing in Kelddath shop at temple.
  • …lycanthropy infection works correctly (however I can replicate it only with one save, strange), turning other party members to greater wolfweres (greaterwolf), however they probably shouldn't drop Peladan as loot ;)
  • RECHECK dead party members shouldn't be visible after area transitions (!IF_ACTIVE or avatar removal). Speaking of travelling corpses, that's the case when Shandalar teleports party. I've checked in original, there are no visible corpses of (already dead) party members on island upon arrival, not the case with GemRB.
  • Being magically asleep not using proper stance (lying, at least male human fighter) for the selected actor - eg. stinking cloud induced. Switches properly if you try to do anything, but should happen before.
  • Sarevok is missing an attack animation (also visible in bg2 and tob).

Problematic BG1 saves

Icewind Dale

  • FIXME Gerth in ar2100 should buy keys and misc items, he does not. In bg1 and iwd critical item flag does not prevent selling as in bg2: start in the critical/destructible part of Store::AcceptableItemType and add a gameflag for the different behavior (if there is — check bg2, pst and iwd2 first)
  • FIXME externalise the portrait icon mapping (FXOpcodes.cpp), so any remaining discrepancies8) from bg2 can be fixed for good and the code gets cleaner. See the PI_* constants' definitions and put them in a new table under unhardcoded/9) that you then load in RegisterCoreOpcodes and use instead of the constants
  • the soul gem - (ar9708) DLSGEM - doesn't cast anything.
    • RESEARCHit also has its own opcode, so check that it functions correctly
  • RECHECKRESEARCH occasionally thehighbaptist speech starts when he can't see you and throws you into cutscene mode for good (stalls permanently)

Icewind Dale 2

  • status from chapter 3 onwards unknown! (all fine until the ice temple, where things go noticeably bad)

Planescape: Torment


Broken spells

A list of broken spells (bad effects, targeting, projectiles, …).

Personal todos

Some developers have their own todo page.

this is how it works, but some games lack the data and even in bgs we're not as smooth as the original
some research, EEs also use <animid>.ini files ala pst — move scale
one of the rare cases where pst is a positive exception
sets the speed to the same value, instead of using a % modifier like in bg2
Chunking causes a permanent animation change (to one of the EXPLODING_ARM/FOOT/LEG/TORSO animations) and a (hair/skin/major/minor) color change (all to a red color). It has to reset the animation of the creature. Party members return to their proper animation(though still recolored), while others revert to the Human Cleric. Its controlled the same waya as CharGen. The creature gets an animation assigned based on its Race/Class/Gender, with Human/Cleric being the default.
the originals had “Tiles Precache Percent”
not needed for regeneration/poison/disease though
not all manually-iconing opcodes are used in both engines
one under shared and one identical for both iwd/how
todo.txt · Last modified: 2017/10/12 16:56 by lynxlynxlynx