User Tools

Site Tools


Current version: 0.8.3
iOS: 0.8.1+
Android: 0.8.3 alpha (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

  • iwd2: level-up
  • 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, actor shadows1)2), full footstep sounds3), actor speed, hit sounds and casting height data (all hardcoded in the originals4)), close afterwards
    • character speeds are therefore mostly too fast, especially in bg1 (also causing its boots of speed to have no effect 5))
  • no instachunks displayed when damaging petrified/frozen actors
  • 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)
  • FIXME detailed combat feedback is missing (bg2: rolls, at least for saving throws + combat ones are harcoded)
  • overhead text should not (always?) move when displayed over actors - it gives out thieves that go invisible by gulping a potion of invisibility RECHECK (some shadow thief bg2 battle would be easiest)
  • RESEARCHthe dying animation is naked - any armor is stripped beforehand (is it different in originals?)
  • modal actions run every 100 adjusted ticks
  • combat round timings are off: the times for weapons to launch and for animations to trigger and so forth re notes
  • 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]).
  • intoxmod.2da handling and intoxication in general (curing; it's also modified by hpconbon.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)


  • 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 )


  • perfect switching weapon abilities: display only the relevant headers


  • FIXME externalise message colors (iwd2 for example uses gold for xp)
  • dialogF.tlk is not handled (grep for dialogtlk; used when protagonist is female)
  • optional newline stripping (Polish tlk vs month names in bg1)
  • messaging system with filtering, squashing 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.
    • RESEARCH damage messages of the same type should be squashed? (check with fireball or other save for half spells)
    • 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)
  • FIXME middle click while console is open -> paste (sdl) clipboard (SDL2 only)
  • 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


  • FIXME change gemrb/docs to dokuwiki syntax, so they can be put directly on the wiki
  • FIXME change heredoc GUIScript.cpp docs to dokuwiki syntax, so they can be put directly on the wiki
  • Add Doxygen doc comments to more objects
  • Write GemRB overview, structure and high-level flow docs (partly done)


  • 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 not optional (if a config option is set: Hotkeys On Tooltips)
  • FIXME keyboard shortcuts assignmnent to tooltips is missing for menu window (return to game, inventory …) tooltips/keys
  • (PARTLY done) Separate OpenAL interface from ACM loader and MVE player
  • implement and use as much from EAX (echo, damping, etc) as possible
  • 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.

Baldur's Gate 2

  • FIXME we don't do NPC portrait swapping (portrait.2da) if the PC picked their portrait. Should be done in Game::JoinParty
  • 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]

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
  • Speaking of temple, each time you enter you should hear wailing of “sirens”/his assistants. I think Alaundo's prophecies singing/cantor sound is missing in Candlekeep in similar way.
    • Alaundo choir should chant on their own. BG1 had this different that bg2 (all TC mods break here) and it looked like they hardcoded a See([PC]): VerbalConstant(INTRO_MEETING):
  • RECHECK (should be fixed) Generic background music is a lot a less played than in original.
  • missing implementation of the IE_AMBI_AREA ambient bit (could give an impression of repetitiveness)? IESDP says: bit 3: (0) Sequential ambient selection / (1) Random ambient selection
  • RESEARCH When selecting multiple items for identification, only the last one is highlighted (but all are in fact selected). A screenshot of the original is needed; the last time this was researched it looked like a data bug with only the 4th button having the needed frame (not that we shouldn't override this folly), but now no example can be found anymore
  • 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.
  • RESEARCH Being magically asleep not using proper stance (lying, at least male human fighter) for the selected actor. Which spell caused this (or which effect is applied)?
  • 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
  • FIXME externalise the portrait icon mapping (FXOpcodes.cpp), so any remaining discrepancies7) 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/8) that you then load in RegisterCoreOpcodes and use instead of the constants
  • the soul gem - (ar9708) DLSGEM - doesn't cast anything.
  • 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 mid chapter 2, where it breaks)

Planescape: Torment

  • The whole floating-text system for Planescape: Torment needs writing.
  • Morte often pathfinds the wrong way around at the start of PS:T.
  • TNO should always be the speaker, not random party members
    • RESEARCH: check what happens in the original, we already handle starting dialog from a player point-of-view. Do all [PC] targets get hacked to Protagonist?
  • animations:
    • we ignore the data from individual animation ini files good explanations
    • Invalid stance IDs everywhere, oh my. - the mime stances, etc are not supported, they are normal stances, without sound
  • no strref (de)composition - many strings come not in the format of “X” like in other games, but just in “NPCNAME: X” variants. Add another column in strings.2da to denote them and then strip “^[^:]*: ” from them on load + fill in where the current entries are now blank (eg. modals)


Broken spells

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

Personal todos

Some developers have their own todo page.

1) PCs, and NPCs based on PC avatars, generic monsters/people are fine
2) IIRC, CSHD is the standard shadow used for many character anims
3) this is how it works, but some games lack the data and even in bgs we're not as smooth as the original
4) one of the rare cases where pst is a positive exception
5) sets the speed to the same value, instead of using a % modifier like in bg2
6) not needed for regeneration/poison/disease though
7) not all manually-iconing opcodes are used in both engines
8) one under shared and one identical for both iwd/how
todo.txt · Last modified: 2015/08/26 20:41 by lynxlynxlynx