devSin Posted July 11, 2006 Share Posted July 11, 2006 I like pretty things, so I wanted to cover the ARE animation stuff I change. I'm just going to list my funky patches; I'm sure you must be getting exasperated with my vague reports, but I suck, sorry. For the zpos stuff, BNOT hexnum is equivalent to - (negative) hexnum+1 (you'll have to do the conversion, sorry). AR0307 - the twirly spike floors have a bad zpos, which causes the static tiles to show up through the animation (zpos has a *huge* effect on how animations are composited). This makes it look blurry with some graphics settings. Additionally, this affects the little torture wheel, which also needs to be drawn as background (otherwise, it obscures the target reticle, and you don't truly know Baldur's Gate II until you've seen 2/3 a target reticle!). COPY_EXISTING AR0307.ARE OVERRIDE READ_LONG 0xb0 ao READ_BYTE ao + 0xa99 f WRITE_BYTE ao + 0xa99 f | 0x1 WRITE_SHORT ao + 0x9b8 0x0 WRITE_SHORT ao + 0xa50 `0x33 WRITE_SHORT ao + 0xa9c `0x81 AR0312 - these houses have bad zpos for the sconces. It really only effects one on the back wall (left of the bed), but there was an area that was perfectly set up, so I just update them all to match. COPY_EXISTING AR0312.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x168 0x31 WRITE_SHORT ao + 0x1b4 0x34 WRITE_SHORT ao + 0x200 0x2e WRITE_SHORT ao + 0x24c 0x3a WRITE_SHORT ao + 0x298 0x31 WRITE_SHORT ao + 0x2e4 0x31 WRITE_SHORT ao + 0x330 0x31 WRITE_SHORT ao + 0x37c 0x38 AR0313 - nearly everywhere they have an oven, the animation is either incorrectly placed or has bad flags. I changed these ages (ages, ages) ago, so I'm not quite sure what they used to look like. COPY_EXISTING AR0313.ARE OVERRIDE READ_LONG 0xb0 ao READ_SHORT ao + 0x34 f WRITE_SHORT ao + 0x34 f | 0x140 AR0334 - nearly everywhere they use a forge/stove, the flames draw on top of the hood. I speculate this is due to the fact that the stoves in the Five Flagons are so much larger (where the positioning is correct). Anyway, simple change so they draw on top of the stove (as expected) but under the hood. COPY_EXISTING AR0334.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x38 0x0 WRITE_SHORT ao + 0x84 0x0 AR0335 - another bedroom/sconce issue. COPY_EXISTING AR0335.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x168 0x31 WRITE_SHORT ao + 0x1b4 0x34 WRITE_SHORT ao + 0x200 0x2e WRITE_SHORT ao + 0x24c 0x3a WRITE_SHORT ao + 0x298 0x31 WRITE_SHORT ao + 0x2e4 0x31 WRITE_SHORT ao + 0x330 0x31 WRITE_SHORT ao + 0x37c 0x38 AR0406 - another forge/stove issue. COPY_EXISTING AR0406.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x1040 0x0 AR0529 - another oven issue. COPY_EXISTING AR0529.ARE OVERRIDE READ_LONG 0xb0 ao READ_SHORT ao + 0x34 f WRITE_SHORT ao + 0x34 f | 0x140 AR0706 - another forge/stove issue. COPY_EXISTING AR0706.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x38 0x0 WRITE_SHORT ao + 0x84 0x0 AR0713 - guess what? Another oven issue. COPY_EXISTING AR0713.ARE OVERRIDE READ_LONG 0xb0 ao READ_SHORT ao + 0x34 f WRITE_SHORT ao + 0x34 f | 0x140 WRITE_LONG ao + 0x20 0x179014e AR1004 - apparently, Deril's home doubles as a meth lab, and his oven pumps out yellow smoke. I don't want to say it's positively a bug, but it's the only place where they would have said "Let's make it yellow!" COPY_EXISTING AR1004.ARE OVERRIDE READ_LONG 0xb0 ao READ_SHORT ao + 0x3c4 f WRITE_SHORT ao + 0x3c4 f ^^ 0x104 AR1601 - a bad flag keeps Desharik's oven from smoking. I'm split on this, as there is no oven ambient, but if you go around paying attention to these things, you'll soon realize how many animations and ambient sounds BioWare simply couldn't be bothered to correctly place. COPY_EXISTING AR1601.ARE OVERRIDE READ_LONG 0xb0 ao READ_BYTE ao + 0x3c4 f WRITE_BYTE ao + 0x3c4 f & `0x80 AR1603 - you won't believe it, but another forge/stove issue. COPY_EXISTING AR1603.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x38 0x0 WRITE_SHORT ao + 0x84 0x0 AR2001 - please, God, make this the last forge/stove issue. COPY_EXISTING AR2001.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x38 0x0 WRITE_SHORT ao + 0x84 0x0 AR2300 - two of the water spouts by the eastern path (just down the rebel stairs, in the chamber with Sekolah's tooth door) have a bad zpos. The first draws over the shell, the second over the wall. Smooth. Updated zpos to draw behind the shell (and behind the crab claw) and behind the wall. COPY_EXISTING AR2300.ARE OVERRIDE READ_LONG 0xb0 ao WRITE_SHORT ao + 0x38 `0x10 WRITE_SHORT ao + 0xd0 `0x2c Link to comment
CamDawg Posted October 30, 2006 Share Posted October 30, 2006 This is some very groovy stuff. I've started a Fixpack screenshot gallery for folks to see the graphical fixes and to complement the written documentation. AR1004 - apparently, Deril's home doubles as a meth lab, and his oven pumps out yellow smoke. I don't want to say it's positively a bug, but it's the only place where they would have said "Let's make it yellow!" This looks intentional, or at least intentional enough for me to leave it be. AR1601 - a bad flag keeps Desharik's oven from smoking. I'm split on this, as there is no oven ambient, but if you go around paying attention to these things, you'll soon realize how many animations and ambient sounds BioWare simply couldn't be bothered to correctly place. I've got smoke from this oven in my game. Link to comment
devSin Posted October 30, 2006 Author Share Posted October 30, 2006 I've got smoke from this oven in my game.It may be your graphics settings. Some of the flags prevent playback when certain graphics settings are disabled (with some settings, for instance, a lot of the smoke animations in ToB will be absent). Or not. It's been a long time. Link to comment
CamDawg Posted October 30, 2006 Share Posted October 30, 2006 I've got smoke from this oven in my game.It may be your graphics settings. Some of the flags prevent playback when certain graphics settings are disabled (with some settings, for instance, a lot of the smoke animations in ToB will be absent). Or not. It's been a long time. Heh. Also, I can't see what the changes to the other two spike wheel animations in ar0307 are doing. Link to comment
devSin Posted October 30, 2006 Author Share Posted October 30, 2006 On the Mac version, at least, with certain graphics settings, the background tile shows through the animation (making it look like the spikes are fading to the next step). It looks hideous. This just sets the zpos so that the animations are drawing "on top" of the tile (rather than "inside" it). There's also a flag missing from the overhead orbs in the first level of Watcher's Keep that causes them to appear green and be partially obscured by the background tile with certain graphics settings (in the Mac version, at least): READ_LONG 0xb0 ao READ_BYTE ao + 0x118 f WRITE_BYTE ao + 0x118 f | 0x80 READ_BYTE ao + 0x164 f WRITE_BYTE ao + 0x164 f | 0x80 READ_BYTE ao + 0x1b0 f WRITE_BYTE ao + 0x1b0 f | 0x80 READ_BYTE ao + 0x1fc f WRITE_BYTE ao + 0x1fc f | 0x80 READ_BYTE ao + 0x248 f WRITE_BYTE ao + 0x248 f | 0x80 Link to comment
CamDawg Posted October 30, 2006 Share Posted October 30, 2006 Cheers, thanks. When (if?) you have some free time, could you post some before and after screenies for me to add to the docs? Link to comment
devSin Posted October 30, 2006 Author Share Posted October 30, 2006 When I get back into IE (looks like toward the end of November), sure. Link to comment
CamDawg Posted October 30, 2006 Share Posted October 30, 2006 Excellent; this is coded and added. If anyone is experiencing the graphical glitches that devSin is describing in ar0307, ar1601, or ar3001 (I'm also not seeing the WK globe issues), I'd love to get before-and-after screenies for the gallery. // animation glitches due to bad layering/flags COPY_EXISTING ~ar0307.are~ ~override~ READ_LONG 0xac "anim_num" READ_LONG 0xb0 "anim_off" FOR (index = 0; index < anim_num; index = index + 1) BEGIN READ_ASCII ("%anim_off%" + ("%index%" * 0x4c)) "anim_name" PATCH_IF ("%anim_name%" STRING_COMPARE_CASE "am307tt1" = 0) BEGIN // spiky wheel in torturer's room READ_BYTE ("%anim_off%" + 0x35 + ("%index%" * 0x4c)) "flags" WRITE_BYTE ("%anim_off%" + 0x35 + ("%index%" * 0x4c)) ("%flags%" BOR 0b00000001) // adds draw as background flag WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0xff7e // height END ELSE PATCH_IF ("%anim_name%" STRING_COMPARE_CASE "am307ur1" = 0) BEGIN // spiky wheel you run across WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0 // height END ELSE PATCH_IF ("%anim_name%" STRING_COMPARE_CASE "am307ur3" = 0) BEGIN // another spiky wheel you run across WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0xffcc // height END END BUT_ONLY_IF_IT_CHANGES // animation glitches due to bad layering COPY_EXISTING ~ar0312.are~ ~override~ ~ar0335.are~ ~override~ READ_LONG 0xac "anim_num" READ_LONG 0xb0 "anim_off" FOR (index = 0; index < anim_num; index = index + 1) BEGIN READ_SHORT ("%anim_off%" + 0x20 + ("%index%" * 0x4c)) "x_coord" READ_SHORT ("%anim_off%" + 0x22 + ("%index%" * 0x4c)) "y_coord" PATCH_IF ((("%x_coord%" = 180) AND ("%y_coord%" = 304)) OR (("%x_coord%" = 170) AND ("%y_coord%" = 310)) OR (("%x_coord%" = 552) AND ("%y_coord%" = 107)) OR (("%x_coord%" = 573) AND ("%y_coord%" = 114))) BEGIN // sconce WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0x31 // height END ELSE PATCH_IF (("%x_coord%" = 438) AND ("%y_coord%" = 121)) BEGIN // sconce WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0x34 // height END ELSE PATCH_IF (("%x_coord%" = 670) AND ("%y_coord%" = 188)) BEGIN // sconce WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0x2e // height END ELSE PATCH_IF (("%x_coord%" = 426) AND ("%y_coord%" = 129)) BEGIN // sconce WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0x3a // height END ELSE PATCH_IF (("%x_coord%" = 680) AND ("%y_coord%" = 194)) BEGIN // sconce WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0x38 // height END END BUT_ONLY_IF_IT_CHANGES // animation glitches due to bad flags COPY_EXISTING ~ar0313.are~ ~override~ ~ar0529.are~ ~override~ ~ar0713.are~ ~override~ READ_LONG 0xac "anim_num" READ_LONG 0xb0 "anim_off" FOR (index = 0; index < anim_num; index = index + 1) BEGIN READ_ASCII ("%anim_off%" + ("%index%" * 0x4c)) "anim_name" PATCH_IF ("%anim_name%" STRING_COMPARE_CASE "am003xa" = 0) BEGIN // oven WRITE_SHORT ("%anim_off%" + 0x20 + ("%index%" * 0x4c)) 334 // x coord, only wrong in ar0713 WRITE_SHORT ("%anim_off%" + 0x22 + ("%index%" * 0x4c)) 377 // y coord, only wrong in ar0713 READ_BYTE ("%anim_off%" + 0x34 + ("%index%" * 0x4c)) "flags" WRITE_BYTE ("%anim_off%" + 0x34 + ("%index%" * 0x4c)) ("%flags%" BOR 0b01000000) // adds not covered by wall flag READ_BYTE ("%anim_off%" + 0x35 + ("%index%" * 0x4c)) "flags" WRITE_BYTE ("%anim_off%" + 0x35 + ("%index%" * 0x4c)) ("%flags%" BOR 0b00000001) // adds draw as background flag END END BUT_ONLY_IF_IT_CHANGES // animation glitches due to bad layering COPY_EXISTING ~ar0334.are~ ~override~ ~ar0406.are~ ~override~ ~ar0706.are~ ~override~ ~ar1603.are~ ~override~ ~ar2001.are~ ~override~ READ_LONG 0xac "anim_num" READ_LONG 0xb0 "anim_off" FOR (index = 0; index < anim_num; index = index + 1) BEGIN READ_ASCII ("%anim_off%" + ("%index%" * 0x4c)) "anim_name" PATCH_IF ("%anim_name%" STRING_COMPARE_CASE "fpit1s" = 0) BEGIN // forges WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0 // height END END BUT_ONLY_IF_IT_CHANGES // animation glitches due to bad flag COPY_EXISTING ~ar1601.are~ ~override~ READ_LONG 0xac "anim_num" READ_LONG 0xb0 "anim_off" FOR (index = 0; index < anim_num; index = index + 1) BEGIN READ_ASCII ("%anim_off%" + ("%index%" * 0x4c)) "anim_name" PATCH_IF ("%anim_name%" STRING_COMPARE_CASE "smoke" = 0) BEGIN // oven smoke plume READ_BYTE ("%anim_off%" + 0x34 + ("%index%" * 0x4c)) "flags" WRITE_BYTE ("%anim_off%" + 0x34 + ("%index%" * 0x4c)) ("%flags%" BAND 0b01111111) // remove show in fog of war flag END END BUT_ONLY_IF_IT_CHANGES // animation glitches due to bad layering COPY_EXISTING ~ar2300.are~ ~override~ READ_LONG 0xac "anim_num" READ_LONG 0xb0 "anim_off" FOR (index = 0; index < anim_num; index = index + 1) BEGIN READ_SHORT ("%anim_off%" + 0x20 + ("%index%" * 0x4c)) "x_coord" READ_SHORT ("%anim_off%" + 0x22 + ("%index%" * 0x4c)) "y_coord" PATCH_IF (("%x_coord%" = 3590) AND ("%y_coord%" = 2171)) BEGIN // water spout WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0xffef // height END ELSE PATCH_IF (("%x_coord%" = 4116) AND ("%y_coord%" = 1641)) BEGIN // water spout WRITE_SHORT ("%anim_off%" + 0x38 + ("%index%" * 0x4c)) 0xffd3 // height END END BUT_ONLY_IF_IT_CHANGES // animation glitches due to bad flag COPY_EXISTING ~ar3001.are~ ~override~ READ_LONG 0xac "anim_num" READ_LONG 0xb0 "anim_off" FOR (index = 0; index < anim_num; index = index + 1) BEGIN READ_ASCII ("%anim_off%" + ("%index%" * 0x4c)) "anim_name" PATCH_IF ("%anim_name%" STRING_COMPARE_CASE "am3001f" = 0) BEGIN // glowing globes READ_BYTE ("%anim_off%" + 0x34 + ("%index%" * 0x4c)) "flags" WRITE_BYTE ("%anim_off%" + 0x34 + ("%index%" * 0x4c)) ("%flags%" BOR 0b10000000) // add show in fog of war flag END END BUT_ONLY_IF_IT_CHANGES Link to comment
devSin Posted October 30, 2006 Author Share Posted October 30, 2006 Coolies. (That flag has nothing to do with fog of war, though; I promise.) Link to comment
CamDawg Posted October 30, 2006 Share Posted October 30, 2006 I gathered as much from the testing. When I'm too lazy to look up something in the IESDP, I just use NI's name for it. Link to comment
Smoketest Posted October 30, 2006 Share Posted October 30, 2006 You know, if you grab the free NetBeans Java IDE from Sun and NI's source code, it's easy as pie to add all the IESDP updates to the structures Jon Olav created. I think he designed it that way on purpose just so he could update things quickly. And if you ever need to rename some variable, just right-click and ReFactor it. No real knowledge of Java is necessary. (Well, it was easy for me, but sometimes I take my 20 years of casual programming experiences for granted.) Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.