Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/06/2013 in all areas

  1. -Fix (#166): do not select unit's original location after issuing target. https://github.com/OpenDUNE/OpenDUNE/pull/166 The function we need to change is void GUI_ChangeSelectionType(uint16 selectionType);There's a switch statement that looks something like: switch (oldSelectionType) { case SELECTIONTYPE_TARGET: case SELECTIONTYPE_PLACE: Map_SetSelection(g_structureActivePosition); /* Fall-through */ case SELECTIONTYPE_STRUCTURE: g_cursorDefaultSpriteID = 0; GUI_DisplayText(NULL, -1); break; ...}In the OpenDUNE patch, I simply made the SELECTIONTYPE_TARGET case jump to the SELECTIONTYPE_STRUCTURE code block. This function used to be called f__B4E9_0050_003F_292A. It was converted to C here: https://github.com/OpenDUNE/OpenDUNE/commit/e6fc7edb83fe169ef61a374551542acd7ba51631 Near l__00BD: emu_ip = emu_get_memory16(emu_cs, emu_bx, 0x33B);switch (emu_ip) { case 0x00DA: goto l__00DA; /* case SELECTIONTYPE_TARGET, SELECTIONTYPE_PLACE */ case 0x00E4: goto l__00E4; /* case SELECTIONTYPE_STRUCTURE */ case 0x00FE: goto l__00FE; /* case SELECTIONTYPE_UNIT */ case 0x0133: goto l__0133; /* case SELECTIONTYPE_MENTAT */ default: /* In case we don't know the call point yet, call the dynamic call */ emu_last_cs = 0xB4E9; emu_last_ip = 0x00D5; emu_last_length = 0x001D; emu_last_c emu_call(); return;}Near l__00DA: you find the call to emu_Map_SetSelection. Near l__00E4: you find the call to emu_GUI_DisplayText. Anyway, it looks like it jumps an offset given by an array indexed by the old selection type. The selection types are: typedef enum SelectionType { SELECTIONTYPE_MENTAT = 0, SELECTIONTYPE_TARGET = 1, SELECTIONTYPE_PLACE = 2, SELECTIONTYPE_UNIT = 3, SELECTIONTYPE_STRUCTURE = 4, ...} SelectionType;I tried to patch up that array: 33 01 DA 00 DA 00 E4 00 FE 00 -> 33 01 FE 00 DA 00 E4 00 FE 00 But that doesn't seem to work by itself. It might be because after issuing the target and just before calling this function, the active unit is set to NULL (see GUI_Widget_Viewport_Click).
    1 point
  2. It is true it's not a perfect adaptation but I S.T.A.L.K.E.R. is a bit more than just a name ripoff. The PR there was pure genius: while aiming straight at the ex-soviet consumer that would know who the Strugatsky brothers were the producers were also popularizing (I think) both the movie and the novel to the rest of the world by wrapping it up around te Cernobil disaster (much better known to the world). Also both the book and the game have a catastrophic event create an exclusion zone full of anomalies that would kill you and artifacts, and also they both have the "wish granter", which is not the Golden Sphere (if I remember correctly) but a 2001: A Space Odyssey sort of monolith. Maybe that's why Stalker was in production for so many years, game concept, adaptation and balance. I am really sorry they took out the vehicles :( Anyway, spinoffs, adaptations and whatnot, those were great games that made the player aware and curious (at least in my case) of the original novels.
    1 point
×
×
  • Create New...