Jump to content

TrueBrain

Fedaykin
  • Posts

    67
  • Joined

  • Last visited

Reputation

3 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Not meant to hijack this thread, but I am curious enough: can you link where you would have read this? Assuming you meant OpenTTD, and not the OpenTT project ;)
  2. TrueBrain

    OpenDune

    We slowed down a bit ... but we are not dead yet :D Today we released 0.4 of OpenDUNE, the next version in our ongoing C-ification of Dune2. Please see http://www.opendune.org for more details and download locations.
  3. It is mostly MrFlibble's job, but I want to beat him to it: http://forum.opendune.org/viewtopic.php?f=9&p=277 Crossposting. Mostly because I wonder what you guys think. Basically, when you now attack a structure of the enemy in OpenDUNE, they massively hunt you down. By all means it seems the intended behaviour. Patching Dune2 should be easy enough, if there is room for it (byte-wise). In 1423:0EAE (no clue where this maps in the executable), it reads: xor ax, ax push ax push si xor ax, ax xor dx, dx push ax push dx <call function in 0x0FE4> (Unit_FindFirst) The first line (xor ax, ax) should be: mov ax, 0xFFFF. For those who don't like to read the link above: Dune2 scans all units of the house of the structure that got attacked (if non-human of course), and puts them in HUNTING mode when they were in AREA_GUARD mode. But due to the above glitch, it only searches for Carry-alls, instead of all units (0 vs 0xFFFF). This seems an innocent glitch, with huge change in gameplay.
  4. LOL! You are insane :D In a very positive way :) I noticed before that the Dune2 demos feel more complete .. would be nice to see if the game can be made playable .. insanity++ ;)
  5. TrueBrain

    OpenDune

    As every 3 months, a bump to this topic: Today we released 0.3 of OpenDUNE, the next version in our ongoing C-ification of Dune2. Please see http://www.opendune.org for more details and download locations.
  6. Most likely :) I guess they couldn't get it to work correct, or had to cut on diskspace .. who knows what the reason was for removing those sound-drivers (hardcoded).
  7. Digging up old topics. First, a small introduction. The next list shows which number matches which music driver (the number is in the dune.cfg, after decoding it): 0: NULL (NULL) 1: ALFX.DRV (ADL) 2: PCSOUND.DRV (PCS) 3: PCSOUND.DRV (PCS) 4: PCSPKR.ADV (PCS) 5: TANDY.ADV (TAN) 6: MT32MPU.ADV (XMI) 7: MT32MPU.ADV (C55) 8: ADLIB.ADV (ADL) 9: ADLIBG.ADV (ADL) 10: PASFM.ADV (ADL) 11: SBFM.ADV (ADL) 12: SBP1FM.ADV (ADL) 13: SBP2FM.ADV (ADL) The name between () is the extension used. Dune2 1.07eu HARDCODED ignores drivers 8 till 12, and sets it to 1. I guess you can still use 13, but this is most likely a bug, and it was not intended to be used. So I guess that is also the reason the drivers are nowhere to be found :)
  8. In 1.07 EU I can find no trace of UnitInfo+3A (your unknown 031) ever being used. Neither is UnitInfo+38 for that matter. Are you sure it has any effect in 1.07 EU? Else I need to see if there are indirect references to the variables (good possible, but takes more effort to find ;)).
  9. Hmm, yes, I guess. It is used twice, once for the target priority stuff we talked about before (the higher that value, the more priority a target has), and once in a function which selects what to build next. It goes a bit like this: Set in a bit-variable what units can be build If structure == STRUCTURE_HIGH_TECH, don't build carry-all if we already have one If structure == STRUCTURE_HEAVY_VEHICLE, don't build harvester if we already have one Loop all unit types, if unit type is allowed by above, there is a 75% chance to continue If 'Unknown 023' (or rather: UnitInfo+2D) is higher than last one, set this as new one Return highest (and this is the one that will be build) PS: For the construction yard something similar happens, but it picks a random structure from the 'just destroyed' buffer that is stored for each House.
  10. I think you are out of luck with those. As for all those bits, all I can say: unused in 1.07 EU :P Variable 36 (Unknown 028 + Unknown 029): Bit usage: 1 - Not used (028, bit 1) 3 - Not used (028, bit 3) 9 - Not used (029, bit 1) 10 - Not used (029, bit 2) All the other 12 bits are used. Well .. maybe those unuseds are used in parts never run while analyzing Dune2, but OpenDUNE runs without ever reading (or writing) those bits. And then there is this very small maybe it is hiding by some weird construction, and they are used after all. But at this stage, I strongly doubt that ;)
  11. Yup! Flag 16. It is nowhere used. Never ever. If I look at the maps the flag is on for, I can only speculate to the intended meaning. Maybe it was the idea to have all the enemy units destroyed too? I don't know .. any clues in the dialogues about other goals?
  12. Every scenario currently has a 'TimeOut=0' value in them :) I can only guess that was the intention of the field .. now if only someone could get their head around the original idea of this ;) Then fixing should be relative easy, it seems not to require that many bits (and because there are a few debug-statements in those functions, enough bytes free :) Oh yeah, I forgot to mention: this seems to be the only function which still contains debug functions. It prints things like: Forced end. Destroy end. Etc.
  13. I don't really get what you mean by this? Credit Quota means that if flag 4 is set, and the player reaches an amount of credits, the goal is reached. TimeOut means that if flag 8 is set, and the player plays for N time, the goal is reached (depending on LoseFlag this can be a good thing. Survive N minutes is possible). The problem with the whole Timeout stuff is: it is partly done (as bluehappybyte already states). The TimeOut value is, as the Quota value, stored in the House information, but never moved to the global variable where it is expected. So all I can tell is that the value always remains 0. I guess it is easy to resolve this issue. One other thing that really doesn't make sense to me: the check to see if the level ends with the timeout, looks like this (pseudo-code): if currentTime < variable: level-ends This doesn't make sense. I can't give any meaning to the 'variable' value which would make sense in this situation. It really feels like they made a bug here, and never fixed it or what ever. Btw, if we would fix both problems, you could even make a 'survive' map, where you have to hold out for N minutes :)
  14. Ah, now I get you. Yes, for a while I had the bit flipped. And the variable in OpenDUNE needs a better naming ;) I now also understand what you mean with 'force full script cycle' ;) Tnx!
×
×
  • Create New...