|
|
1.1.1.2 ! root 1: WinDoom - V0.90 1.1 root 2: 1.1.1.2 ! root 3: 14 Jan, 1998 1.1 root 4: 1.1.1.2 ! root 5: Thanks go first to id Software for making a great game ! 6: and then releasing the source code to it so we could ! 7: have something else to play with. ! 8: ! 9: To anyone working on their own Win32 ports of Doom: ! 10: If you want to share programming information then all ! 11: you have to do is ask. I'll tell you whatever I know ! 12: if it will help. I AM going to release my modified ! 13: source code when I get this stabilized. ! 14: ! 15: ! 16: HIGH RESOLUTION MODES NOW AVAILABLE! ! 17: ! 18: In order to know what video modes are available on ! 19: your system, look in the windoom.dbg file after you ! 20: have run the program at 320x200 resolution. Any ! 21: video mode that has an 8 in the third column is ! 22: usable unless the height is greater than the width. ! 23: ! 24: The syntax for high resolution modes is: ! 25: ! 26: -width xxxx -height yyy ! 27: ! 28: where the xxxx is the width you want to use ! 29: like 320 and the yyy is the height you want to ! 30: use like 240. ! 31: ! 32: You can put these on your command line if you ! 33: create a shortcut to the program and modify ! 34: the command line in the attributes page of ! 35: the short cut's properties. ! 36: ! 37: ! 38: TAKE NOTE: ! 39: ! 40: If you have read this document before you really should ! 41: re-read the whole thing again if the version number above ! 42: has changed. No telling what you might find changed... ! 43: ! 44: ! 45: DISCLAIMER ! 46: ! 47: I make absolutely NO warrantees of any kind for this ! 48: program. I am not responsible for any consequences ! 49: of anyone using this program. ! 50: ! 51: id Software owns the rights to Doom and to the source ! 52: code they distributed. This program was compiled from ! 53: source code to that game that was modified by me. So ! 54: don't bug id Software if you've got a problem with ! 55: this program. I'm the one who screwed up. Tell me. ! 56: ! 57: ! 58: HELLO ! 59: ! 60: This is my version (so far) of a Win32 port of the Linux ! 61: Doom source code released by id Software. I have gotten ! 62: most of the features of the original program working but ! 63: it isn't quite ready for primetime. It does odd things ! 64: occasionally, and sometimes sounds just disappear. Probably ! 65: because of the sound buffer manager being non-existent. ! 66: ! 67: Please DO E-Mail me with problems you've had with this ! 68: especially if you can't get it working at all. I already know ! 69: of most of the problems you may encounter and I am already ! 70: addressing them. But I want feedback about any problems ! 71: you encounter. There is a file generated in your game ! 72: directory called windoom.dbg. It contains some data that ! 73: will probably be helpful to me in debugging whatever problem ! 74: you've encountered. Screenshots may be helpful, too. ! 75: ! 76: I have several very different systems to test this on and ! 77: a LAN as well but I couldn't possibly duplicate the variety ! 78: of systems you all have. Running it on your systems is ! 79: the best testing I can get. ! 80: ! 81: I know this is more like a public Alpha test but I did want ! 82: to share what I have done so far, though. ! 83: ! 84: Also, please don't send me E-Mails asking for features or ! 85: changes. There will be time enough for that after the ! 86: game actually works properly. ! 87: ! 88: New revisions will be forthcoming soon. ! 89: ! 90: Also, when I've got all the original Doom features working ! 91: and the program stabilized, I will release my source code ! 92: for the game. ! 93: ! 94: Also, after I get all the enhancements added to the game ! 95: that I want to add, I will release the source code to ! 96: that as well. I've detailed a couple of them below. This ! 97: probably won't be before the summer, though. I've got a ! 98: LOT planned. ! 99: ! 100: Also, if you're a Doom purist. Why are you reading this? ! 101: ! 102: ! 103: REQUIREMENTS ! 104: ! 105: This program is a Win32 application and REQUIRES DirectX 5 ! 106: (sorry NT folks). It would have been possible to do what ! 107: was done with DirectX 3 but I've already installed DirectX ! 108: 5 and wanted to use it. DirectX 5 will be supported in the ! 109: 5.0 version of NT. (Yes, I KNOW Microsoft says you can write ! 110: DirectX 3 compatible software using DirectX 5. I didn't want ! 111: to.) If you don't have DirectX 5, you can get it here: ! 112: ! 113: http://www.microsoft.com/msdownload/directx5/directx5.htm ! 114: ! 115: If you want to run ANYTHING under Windows95 you really should ! 116: have at least 16 Meg of RAM. 32 Meg is MUCH better. ! 117: ! 118: WHAT'S WORKING? ! 119: ! 120: Video - DirectDraw is being used as a flipping surface with ! 121: two surfaces. The game is rendered into a memory ! 122: area then copied to the back DD buffer. The palette ! 123: is updated through the DirectDraw surface attached ! 124: palette. All video works. An initial attempt was ! 125: made to increase the resolution but was not entirely ! 126: successful. Default screen resolution is 320x200. ! 127: ! 128: Sound - DirectSound is being used for playing the sounds. ! 129: Currently, the sounds play until they are finished ! 130: and do not loop as in the original game. Nor can ! 131: they currently be stopped. This is being worked on ! 132: and will be functional in a few days. Volume control ! 133: and panning are both working adequately. Buffer ! 134: management is non-existent at this point. It is ! 135: being worked on and a proper sound buffer manager ! 136: will be forthcoming. The volume controls on the ! 137: menu DO NOT WORK YET. I haven't even looked at them. ! 138: ! 139: ! 140: Network - The network code is there and works. The syntax ! 141: for a network game is a little odd but it works. ! 142: Please see "How do I play a network game?" for details. ! 143: I used the Linux code that was already there and ! 144: adapted it to WinSock2. ! 145: ! 146: ! 147: Music - I haven't had the time to get a MUS to MIDI con- ! 148: version written, yet. But I do have code to play a ! 149: midi file "doomsong.mid". There is also a little ! 150: surprise as you read on. ! 151: ! 152: ! 153: Input - DirectInput and the Windows message loop are used to ! 154: handle keyboard, mouse and joystick input. Not all ! 155: the keys on the keyboard have been mapped. Notably ! 156: missing, so far are most of the keys in the numeric ! 157: keypad and some of the navigation keys. Pause DOES ! 158: work. The page-up and down keys as well as home, ! 159: end, insert and delete are not normally used anyway. ! 160: There is also a "console" key which is "`". ! 161: ! 162: Demos - The demos now work. Beware trying to play a demo for ! 163: which you do not have the correct IWAD or PWAD file ! 164: loaded for. It can cause weird things to happen ! 165: in the game and even crash the machine. The demos ! 166: now appear to be 100%. ! 167: ! 168: ! 169: HOW DO I USE IT? ! 170: ! 171: Create a directory and put the WinDoom.exe program in it ! 172: along with the Doom IWAD of your choice (I've tested this ! 173: with all three of the Doom I wads (doom1.wad, doom.wad and ! 174: doomu.wad) as well as doom2.wad, tnt.wad and plutonia.wad. ! 175: ! 176: The order of precedence in looking for an IWAD is this: ! 177: ! 178: doom2.wad - retail Doom II wad file ! 179: doomu.wad - ultimate Doom I retail wad file ! 180: doom.wad - Doom I registered shareware wad ! 181: doom1.wad - Doom I unregistered shareware wad ! 182: tnt.wad - Another Doom II IWAD from id ! 183: plutonia.wad - Another Doom II IWAD from id ! 184: ! 185: If you have "Ultimate Doom" you need to rename your IWAD ! 186: to doomu.wad. (it's dumb I know) If you don't, the program ! 187: will think that you have the original Doom I loaded and ! 188: will try to cycle to a screen that isn't there and die. ! 189: (I'll fix that when I get time.) ! 190: ! 191: When the program is first run, it will create a section in ! 192: the win.ini file for WINDOOM that stores the location of ! 193: the WinDoom program. If you move the program or change the ! 194: name of the directory in which the program is installed you ! 195: need to update this ini file entry or remove it. ! 196: ! 197: An ini file will be created (or updated) in the directory ! 198: in which WinDoom is run with the configuration information ! 199: for the program. All numeric entries are either boolean ! 200: (0 = false, 1 = true), keyboard scancodes or ASCII character ! 201: values. Modifying this file is currently the only way to ! 202: change some of the keyboard/mouse/joystick mappings. A way ! 203: to modify this in the game or a setup program will be ! 204: forthcoming. I am going to make it possible to set these ! 205: values from within the program from the console. When this ! 206: is finished there will be a published list of cvars that you ! 207: can set to setup your controls. (i.e. always_run ) ! 208: ! 209: A general rule to go by if you want to edit the windoom.ini ! 210: is that printable characters use the ASCII value. Non-printable ! 211: keys (ESCAPE, RETURN, ARROWs, etc.) use keyboard scan codes. ! 212: It's confusing, but that's the way it works. ! 213: ! 214: Make sure your shortcut, if you create one, has the directory ! 215: where you installed the program as the working directory. It ! 216: probably won't run otherwise. ! 217: ! 218: I have not tried some of the original command line options to see ! 219: if they work or not. I have spent most of my time writing code ! 220: to get the program working. I will be testing the rest of these soon. ! 221: ! 222: I have tested the following and know that they work: ! 223: ! 224: -nomonsters ! 225: -deathmatch ! 226: -net ! 227: -skill ! 228: -warp ! 229: -episode ! 230: -playdemo ! 231: -timedemo ! 232: ! 233: The others will probably work but I have not tested them. ! 234: ! 235: ! 236: HOW DO I PLAY A NETWORK GAME? ! 237: ! 238: Okay, this is little different than a DOS Doom network game. ! 239: It's just like the Linux parameters, though. ! 240: ! 241: What you want to do is create a shortcut to your game and ! 242: then change the parameters of your shortcut to include the ! 243: network commands on the command line. ! 244: ! 245: The parameter to start a network game is "-net" (without the ! 246: quotes). You then follow the -net command with the player ! 247: number your machine is going to be (1 to 4) and the IP ! 248: addresses or hostnames of the OTHER systems you will be ! 249: playing with. The IP addresses MUST be preceded by a period ! 250: ".". If you leave off the leading period, the game will ! 251: think that the IP address is a hostname and try to resolve ! 252: it into an IP address (and die on you). ! 253: ! 254: Sample command lines for two players would look like this: ! 255: ! 256: machine 1: (hostname: rimmer IP address: 192.168.1.5) ! 257: windoom -net 1 holly -deathmatch -nomonsters ! 258: OR ! 259: windoom -net 1 .192.168.1.4 -deathmatch -nomonsters ! 260: ! 261: machine 2: (hostname: holly IP address: 192.168.1.4) ! 262: windoom -net 2 rimmer -deathmatch -nomonsters ! 263: OR ! 264: windoom -net 2 .192.168.1.5 -deathmatch -nomonsters ! 265: ! 266: In order to use hostnames rather than IP addresses you ! 267: must either have DNS setup or have a valid hosts file. ! 268: ! 269: If you add a third or fourth machine to the game you need ! 270: to add the IP addresses of the OTHER machines to the ! 271: command line on each machine. You do not put your own ! 272: machine's IP address on the command line. You also ! 273: do not put how many machines are in the game after the ! 274: -net command. Only which player, out of the 4, you are. ! 275: ! 276: The player numbers must be contiguous. You can't have ! 277: players 1,2 and 4. Also, one player MUST be player 1. ! 278: Player 1 is the KEY player and that machine coordinates ! 279: all the other systems. ! 280: ! 281: The number of players in the game is determined by how ! 282: many IP addresses you put on the command line plus your ! 283: machine. ! 284: ! 285: The command line on the KEY player's machine in a four ! 286: player game might look like this: ! 287: ! 288: windoom -net 1 .192.168.1.3 .192.168.1.4 .192.168.1.5 -deathmatch -nomonsters ! 289: OR ! 290: windoom -net 1 cat holly rimmer -deathmatch -nomonsters ! 291: ! 292: The other player's command lines in the same game might ! 293: look like this: ! 294: ! 295: windoom -net 2 lister holly rimmer -deathmatch -nomonsters ! 296: OR ! 297: windoom -net 2 .192.168.1.2 .192.168.1.4 .192.168.1.5 -deathmatch -nomonsters ! 298: ! 299: windoom -net 3 lister cat rimmer -deathmatch -nomonsters ! 300: OR ! 301: windoom -net 3 .192.168.1.2 .192.168.1.3 .192.168.1.5 -deathmatch -nomonsters ! 302: ! 303: windoom -net 4 lister cat holly -deathmatch -nomonsters ! 304: OR ! 305: windoom -net 4 .192.168.1.2 .192.168.1.3 .192.168.1.4 -deathmatch -nomonsters ! 306: ! 307: If you start a network game and the program appears to be ! 308: "hung" (black screen only), press and hold the escape ! 309: key for a few seconds. The program will terminate. It ! 310: generates an error when shutting down but it doesn't ! 311: affect game play. I should have that error figured out ! 312: soon. ! 313: ! 314: I DO NOT know if the UDP datagrams used are robust enough ! 315: to allow this to be played over the internet. My assumption ! 316: is that it would be but I don't know. I haven't tried it. ! 317: ! 318: I have started up a four player game on my network and ! 319: played at all four stations. Response was good and play ! 320: appeared to be smooth. ! 321: ! 322: I'd be interested to know if anyone is able to play this ! 323: over the Internet with all the problems that entails. I can't ! 324: because of my router. ! 325: ! 326: ! 327: BEFORE SOME OF YOU ASK ! 328: ! 329: If you only have the Doom shareware IWAD, you CANNOT use ! 330: the Plasma gun or the BFG9000. They just aren't in the ! 331: WAD file to use. You also can't use the double-barreled ! 332: shotgun in Doom I. There are no sprites for those things ! 333: in those wads. It's not something you can change in the ! 334: program. ! 335: ! 336: ! 337: BUG FIXES: ! 338: ! 339: There appear to be some video cards that have multiple ! 340: display sync rates at various resolutions. It may be ! 341: necessary to have a setup program that will let you ! 342: pick the sync rate you want to use at any given ! 343: resolution in order for some monitors to be able to sync ! 344: to them. I am working on this at this right now. ! 345: ! 346: Added normal VGA mode (320x200x8) support to DirectDraw ! 347: instead of just ModeX. This may fix the few remaining ! 348: video problems. (I hope...) (no, it didn't :( ! 349: ! 350: Notice to 3Dfx card owners. Sorry I didn't test this on the ! 351: 3Dfx machines earlier. I have one but didn't think it would ! 352: interfere with the game running. (Boy, was I wrong...) It ! 353: works now. (I don't have one on my development systems...) ! 354: Oddly enough, the Obsidian card doesn't do what the Monster ! 355: 3D does. ! 356: ! 357: There was a bug in the sound volume code that wasn't using ! 358: the full volume range. It now does. ! 359: ! 360: Changed mouse mode to non-exclusive because switching from ! 361: the game to something else completely locked up the mouse. ! 362: ! 363: I have gotten some reports of problems from people who have ! 364: S3 Trio/64 video cards that their video is "screwy". The ! 365: display appears to be in the top half of the screen only. ! 366: ! 367: I have modified the blitting code to the back surface to ! 368: try to alleviate this. I would like to know if this was ! 369: successful. I don't have a Trio/64 card to test it on. ! 370: ! 371: The DirectDraw problem of not enough memory to create ! 372: surface should be fixed. I have been able to reproduce ! 373: the failure and changed to the code to work around it. ! 374: ! 375: The IDCLEV cheat code did not work in DoomII or Final- ! 376: Doom. This has been fixed in the game and the console. ! 377: ! 378: Palette index problem with indices 0 and 255 is fixed. ! 379: ! 380: WHAT'S NEW? ! 381: ! 382: A few new things have been added along the way. ! 383: ! 384: 1. A print screen key is now always available by pressing ! 385: the (Print Screen/Sys Rq) key on your keyboard. If you ! 386: aren't playing a game, no message will appear on the ! 387: screen but a print screen PCX file WILL be generated. ! 388: ! 389: 2. I have added a console similar to the Quake/Quake II ! 390: console. It isn't as fancy and no doubt not as functional ! 391: as the Quake console but it works and any keyboard command ! 392: such as the cheats can be entered in the console. Also, ! 393: all messages that appear on the screen briefly will be ! 394: displayed in the console. The console key is the "`" ! 395: key. The following commands are currently implemented: ! 396: ! 397: iddqd - god mode ! 398: idfa - full ammo ! 399: idkfa - keys full ammo ! 400: idclev - change level ! 401: idchoppers - chainsaw and invulnerability ! 402: idclip - no clipping toggle ! 403: idspispopd - no clipping toggle ! 404: idbeholdi - invisibility ! 405: idbeholdv - invulnerability ! 406: idbeholds - strength (berserk pack) ! 407: idbeholdr - radiation/environment suit ! 408: idbeholdl - light amplification goggles ! 409: idbeholda - all map cheat ! 410: cd on - starts your cd player (switches from midi) ! 411: cd off - stops your cd player (switches to midi) ! 412: cd pause - pause/resume cd music toggle ! 413: cd resume - pause/resume cd music toggle ! 414: cd next - play next song on cd ! 415: cd + - play next song on cd ! 416: cd prev - play previous song on cd ! 417: cd - - play previous song on cd ! 418: cd XX - plays song number specified in XX 00 to 99 ! 419: midi pause - pauses/resumes the midi playback (toggle) ! 420: midi resume - pauses/resumes the midi playback (toggle) ! 421: quit - quits the game (immediately) ! 422: god - enable god mode (degreelessness?) toggle ! 423: map - e?m? or map?? (Doom I or Doom II map names) ! 424: noclip - no clipping toggle ! 425: give all - gives full ammo,armor,health,weapons,keys ! 426: give ammo - gives full ammo ! 427: give armor - gives full armor ! 428: give health - give 100% health ! 429: give weapons - gives all weapons ! 430: give keys - gives all keys ! 431: give backpack - gives ammo backpack ! 432: always_run X - toggles always run 0 = off, 1 = on ! 433: ! 434: The map and idclev commands are disabled from the console ! 435: during a network game. It crashes the machine you do it ! 436: on and locks up the KEY player's machine. The other players ! 437: can exit the game but their systems are VERY slow. (You ! 438: have to hold the keys longer.) ! 439: ! 440: All the original cheat codes work EXACTLY as they did ! 441: originally. No changes have been made to those. The ! 442: new MAP command works similarly to the MAP command in ! 443: Quake/QuakeII. If you want to select a Doom 1 or Doom ! 444: II level you type in MAP then the full name of the ! 445: map you want to load (E1M7 or MAP19). ! 446: ! 447: All the cheats are disabled during network games, also. ! 448: Note: This does not include the game control commands, ! 449: just the "cheats". ! 450: ! 451: A number of other commands are planned for this. Mostly ! 452: just game variables that you can set. (like always_run) ! 453: ! 454: All game input is dead while the console is active, so ! 455: be warned! The <ESCAPE> key as well as the "`" key will ! 456: terminate the console. Any command that you have not ! 457: pressed <ENTER> to complete will be thrown away. The ! 458: menu and console shut each other down when you call ! 459: them up. They are mutually exclusive. ! 460: ! 461: The console was done because I wanted to support the CD ! 462: player and there simply weren't enough keys available to ! 463: assign keys to handle this and keep the original cheat ! 464: codes. Also no menus can be added without hacking the ! 465: original menus to bits and reassembling them. That was ! 466: too much trouble. Besides the console is very flexible. ! 467: All sorts of new commands can now be implemented. ! 468: ! 469: 3. As you see above, a CD player is now supported. A number ! 470: of features are planned for this (playlists, directory, ! 471: naming, song naming, etc.) Trying to play a CD with no ! 472: CD in the drive will do nothing. Removing the CD from the ! 473: drive while playing will result in the MIDI song being ! 474: restarted. The CD player will detect if the CD has been ! 475: changed and start playing on the first music track (if ! 476: there is one) and will not play if there are no music ! 477: tracks. ! 478: ! 479: 4. Midi file playing. Currently a single MIDI file will be played ! 480: (if it exists) in the game directory. The name of this file is ! 481: doomsong.mid. It can be any valid MIDI file. It will be played ! 482: ALL the time unless you turn on the CD player. ! 483: ! 484: 5. There is now an "always_run" key. I got this idea from Chi ! 485: Hoang and his DOSDoom. The always_run key is the <CAPS LOCK> ! 486: key and it toggles between on and off. This key state is ! 487: saved in the windoom.ini file. ! 488: ! 489: ! 490: WARNINGS! ! 491: ! 492: ! 493: Context switching (switching to other programs) while playing this ! 494: program MAY LOCK YOUR MACHINE UP. (This is being looked into.) ! 495: The fix is probably very simple. I haven't looked very hard. ! 496: ! 497: This program is by no means ready for prime time but it does work ! 498: mostly. The original music was a large part of Doom for some of ! 499: us and this game isn't complete without it. It IS being worked on. ! 500: It may not be possible, however, to play against other versions of ! 501: Doom with this code. I DO have the specifications for the IPX ! 502: protocol used by the original Doom and I will attempt to make that ! 503: work as well. ! 504: ! 505: Supporting DOS Doom in network games is, therefore, doubtful but ! 506: it may happen. However if Chi and I can maintain the same message ! 507: data for the networking, you should be able to play network games ! 508: between the two. ! 509: ! 510: WHAT'S COMING? ! 511: ! 512: Note the version is on the console on the bottom right. Something ! 513: I "stole" from Quake's console. It's a good idea with a Win32 ! 514: game to have SOME way to see what version you are running. ! 515: ! 516: The volume control for music will control which ever music mode ! 517: is currently selected when it's done. It isn't done yet. ! 518: ! 519: I am going to add my OpenGL Doom level viewer as the video output ! 520: portion of Doom. I already have ALL the code to generate the levels ! 521: as polygons, OpenGL texture creation and rendering of the level. ! 522: ! 523: I have enclosed a screen shot of the OpenGL Level Viewer so you can ! 524: get an idea of what that Doom will look like with an OpenGL renderer. ! 525: ! 526: This will mean replacing most of the current renderer or at least ! 527: making major modifications to it so that will be fairly slow in ! 528: coming. ! 529: ! 530: Once the game has been converted to a polygon renderer (not as ! 531: simple as it sounds), I am going to add the ability to look ! 532: (and aim) up and down. I am also going to add a crosshair. ! 533: ! 534: Before I get ahead of myself, let me say that I have a zillion ! 535: other changes in mind but the program needs to get back to the ! 536: level of the commercial release before any other modifications ! 537: are made. ! 538: ! 539: The CD player was added as a replacement for the missing Midi music. ! 540: I know it's not the same but you can pick whatever music you want ! 541: while you're playing Doom, now. I like cut 6 on the Quake II CD! ! 542: ! 543: The console was necessary to make the CD interface possible. It ! 544: was ridiculously easy to do. I guess id just hadn't thought of ! 545: it when Doom was released or maybe it didn't fit with their ! 546: design. Who knows. You don't have to use if you don't want to. ! 547: It's ALWAYS available, too. ! 548: ! 549: There will probably be a Win32 dialog box interface created as ! 550: the front-end of the program similar to the Doom95 dialog box. ! 551: ! 552: Most of the features (if not all) of that dialog will be duplicated ! 553: since most of them are necessary. This will be available before ! 554: the move to OpenGL or any other modifications. It's a pity we ! 555: didn't get that source code so we wouldn't have to recreate ! 556: so much of it. Oh, well, we learn more this way... ! 557: ! 558: ! 559: THAT'S ALL FOLKS ! 560: ! 561: Notice the DOOM98 in the top right corner of the screen? Please ! 562: don't copy that if you are working on your own Win32 port. Or, ! 563: at least make yours look different. (The console I mean.) The ! 564: look of mine is set and I am not going to change it. ! 565: ! 566: Enjoy it if you can... ! 567: ! 568: Bruce Lewis ! 569: [email protected] ! 570: ! 571: ! 572: Thanks to all of you who have downloaded the program (I'm not ! 573: calling it a game. The game part comes from id!). Your feedback ! 574: has been very helpful and has made this a better program. ! 575: ! 576: And to those of you who have had problems. I thank you for ! 577: your patience while I worked out the bugs you've reported. ! 578: ! 579: Thanks again to id Software for making Doom. ! 580: ! 581: Microsoft(tm)(c) 1975-1998, Microsoft, Inc., All Rights Reserved. ! 582: Quake(R)(c) 1996, id Software, Inc. All Rights Reserved. ! 583: Quake II(R)(c)1997, id Software, Inc. All Rights Reserved. ! 584: DOOM(R)(c) 1993, id Software, Inc. All Rights Reserved. ! 585: DOOM(R) and the DOOM image are registered trademarks of ! 586: id Software, Inc. 1.1 root 587:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.