July 25, 2017, 07:39:26 PM

Username
Password

  Show Posts
Pages: [1] 2 3 ... 66
1  Modifications / Tools / Re: Mod Selector on: June 01, 2017, 12:22:28 AM
Do you also see entries of ".CUR" or ".ANI" files in "Dark Omen\Graphics\Cursors" redirected? FindFirstFile is usually part of the "Your DO install is incomplete" check.

Looks like Cursors are created with "LoadCursorFromFileA" and if this doesn't go indirectly through CreateFile or MapViewOfFile it's not redirected.

And looks like the cursors are only initialized on Dark Omen startup, so changing the mod would not change them back.

Actually I like that they aren't redirected because this is imo a user decision which kind of cursors they want.
2  Modifications / Tools / Re: Mod Selector on: May 30, 2017, 10:39:17 AM
Ah, thats a side effect of too many maps? Okay, because my test file contained 100 Cheesy.
Good then I will know that I fixed it ^^

Should work now. I updated the "latest version" link in the 1st post of the topic.


https://github.com/Ghabry/Dark-Omen-Mod-Selector/commit/0ab78f307a240db003055328ee02863916a2561d
3  Modifications / Tools / Re: Mod Selector on: May 29, 2017, 11:44:39 PM
About the Battles.ENG size issue. Looks like the buffer where the map list is copied to has a fixed size but the application doesn't check it and the additional map data is written into other Dark Omen data structures and corrupting them o.O

No idea why but I can't get the pre-battle scene (where you select army and map) to open. It automatically closes and returns me to the first multiplayer-scene (Play/Edit Army). So I will try to fix this blind.

In theory I know what must be modified Smiley. Will increase the limit to 200 entries.
4  Warhammer Dark Omen / Help Section / Re: application unable to start correctly on: May 22, 2017, 04:41:13 PM
First isolate if it's ddraw.dll or darkpatch.dll. Does original PRG_ENG start with ddraw.dll in the folder?

Does modded PRG_ENG work without ddraw.dll in the folder?

Otherwise it must be darkpatch.dll. Though no idea what the problem is then, have no Windows 8 :/
5  Warhammer Dark Omen / Help Section / Re: application unable to start correctly on: May 10, 2017, 10:54:44 PM
I analyzed this error two weeks ago because I had no setup available and the same issue.

Go to "Programs and Features" and click "Add/Remove Windows Features".
And under "Outdated/Inherited components" (No idea how it is called in English) tick "DirectPlay".

Accept the changes and DO should start.
6  Modifications / Maps / Re: Custom CTL OpCodes on: May 05, 2017, 05:20:28 PM
Global CTL functions sounds interesting. Conviniently Dark Omen has one function to do the function number -> address mapping so in theory it should be feasible to simply parse a 2nd CTL file which contains "global functions" and then to hook this lookup function... Will check how hard this is.
7  Modifications / Maps / Re: Custom CTL OpCodes on: May 04, 2017, 04:52:43 PM
Aaah, yeah. That stuff. Was documented here: http://wiki.dark-omen.org/do/Talk:DO/ARM#Unit_Type_Bitfield

Okay so CTL had only a unit type but no race check. good.
8  Modifications / Maps / Re: Custom CTL OpCodes on: May 01, 2017, 11:24:33 PM
Olly your requests are probably too complex for single opcodes. That should be achievable through smart ctl usage I assume.

Cuthalion: proper random is easy to add Smiley
Guess I could also provide old opcodes which take a register argument instead of only constants, will add more flexibility (e.g. for addmagic)
How is the unit race specified in wh32edit?
9  Warhammer Dark Omen / Help Section / Re: 3D mode and Win8/7 [ Dark Omen ] on: May 01, 2017, 11:10:02 AM
Never heard about pcem. Interesting tool for old games Smiley
10  Modifications / Maps / Custom CTL OpCodes on: April 30, 2017, 06:38:44 PM
The latest version of the "Mod Selector" added support for custom CTL commands. To use them you need the latest version of ctldis, too.

Currently implemented commands:

set_deployment_limit n - Sets the deployment limit on this map to "n". Call before "wait_for_deploy" in .func 100.

Any ideas for further commands?
11  Modifications / Tools / Re: Mod Selector on: April 30, 2017, 06:21:31 PM
Well I meant that you have to remove the ddraw.dll of aqrit which provides XSlots because our codes conflict now.

So ddraw.dll is free for other things like this dgvoodoo lib.
12  Warhammer Dark Omen / Singleplayer / Re: Further CTL investigation on: April 30, 2017, 04:44:16 PM
Updated ctldis again. Together with the latest version of the Mod selector (released today) you get the new opcode

set_deployment_limit n. Where n is obviously a number of how many units are allowed to be deployed.

Put it in .func 100 anywhere before "wait_for_deploy" obviously.
13  Modifications / Tools / Re: Mod Selector on: April 30, 2017, 02:49:12 PM
Update!

Download

This version merges aqrits changes provided by his ddraw.dll into darkpatch.dll

This means: Delete ddraw.dll before running EngRel otherwise bad things will happen!

XSlots works now without restarting Dark Omen after switching a mod (at least I think so, tell me if you observe any unexpected behaviour).

New: Custom handler for CTL OpCode 0xf1, see the CTL thread.
14  Warhammer Dark Omen / Singleplayer / Re: Further CTL investigation on: April 29, 2017, 03:02:25 AM
Assembling works now.

Annotating should be mostly complete. There are still some empty dicts (e.g. "Voice" for all the audio stuff) or almost empty (e.g. events) dicts. Feel free to fill them and to post them here so I can add them to the script.

You find this at line 460+.

Ignore game_status and alignment, I fill them later.

Please also take a look at the new scripts and try to figure out what some Unit and Control Flags could be. I have notes about them but most of them are uncertain, so want to see others opinion before I add my flawed data.

Edit: Have to recheck arguments of type "ID. Some of them actually check the UnitID, not an incrementing number (enemy+ally). But thats just a visual issue, doesn't impact the functionality
15  Warhammer Dark Omen / Singleplayer / Re: Further CTL investigation on: April 27, 2017, 12:26:35 AM
Added now all known OpCodes to ctldis and type annotated all OpCodes (still without assembler, I add the assembling during the next days). Feel free to make suggestions.

Annotation is still incomplete, more to come.

What is already in:

X() means the argument is unused
E() means the argument is an event
F() means the argument is a function

Example output:

on_event E(71)
   event_test_any_friend_collects_this_item
   iffalse
      event_test_distance_and_collect_this_item 240
      set_return_func_iftrue F(137)
   endif
   end_event Filter



.func 0
    init_unit X(128)
    clear_ctrl_flag 0x8000
    set_label 0xabc0
    #3c 240, X(0)
    set_event_handler F(14)
    set_callback 13, 29
    set_global_r_i 0, 0
    set_global_r_i 1, 0
    wait_for_deploy
    save_ip
    find_and_collect_item Treasure_Chest_100gc
    set_timer 25
    wait_for_timer
    play_self 64
    reset_call_stack
    save_ip
    do
        wait_unit_flag3_clear CollectingItem
        find_and_collect_item Treasure_Chest_100gc
        iffalse
            find_enemy_uflag_attrib E(4), 0, EngineOfWar
            iffalse
                test_unit_flag3 0x400
                iffalse
                    add_waypoint 99
                endif
            endif
        endif
        set_timer 10
        wait_for_timer
    always



on_event E(69)
   event_test_item Treasure_Chest_100gc
   iftrue
      test_event_from_enemy
      iffalse
         test_global_r_eq_i 1, 1
         iffalse
            play_self 66
            set_global_r_i 1, 1
         endif
      endif
      broadcast_event_to_friends E(17)
   endif
   event_test_unit_collects_this_item
   iftrue
      test_event_from_enemy
      iftrue
         test_can_fight_and_sender_does_not_retreat
         set_return_func_with_restart_iftrue F(127)
      else
         set_return_func F(134)
      endif
   endif
   end_event Filter


That "can fight and sender doesn't retreat" appears to make sense because 127 contains:


.func 127
    #14 4, E(-1)
    send_event_to_stored_unit E(20)
    wait_unit_flag1_clear 0x8 | 0x4000
    play_self 1
    #48
    #4f
    do
        for 2
            set_timer 10
            test_target_in_charge_range
            goto_iftrue F(129)
            wait_for_timer
            test_unit_flag1 0x10
            iftrue
                restore_ip
            endif
        next
        #49
    always

.func 129
    charge_and_send_event_to_target ; event 7
    iftrue
        play_self 2
        #14 19, E(-1)
        do
            sleep
            #b0 0
            test_unit_flag1 0x10
        whilenot ; I guess this loop tests if the charge is finished.
    endif
    goto F(134)
Pages: [1] 2 3 ... 66