HAWKQUEST Programming by Andrew Bradfield Writing files to the boot disks Disk 1 Side 1 Sectors Description Writing info 1-4 Boot program w% 01 0500 04 5-6 Boot screen display list by hand 7-52 Boot screen 7-22 Fun with Art file w% 07 2106 10 23-38 change to FF FF 06 20 00 3F w% 17 28FE 10 39-52 w% 27 310E 0E 53-60 FREE 61-246 main game program w% 3D 6000 BA 247-259 FREE 260-266 * Planet 1 Level 1 attack info w% 104 2000 07 267-269 Planet 1 Level 2 attack info w% 10B 2000 07 274-280 FREE 281-404 Title program w% 119 2000 7B 405-408 High Score save 409-413 save game 1-5 414-421 * Planet 1 Character set w% 19E 2000 08 422-431 * explosion data w% 1A6 2008 08 w% 1AE 2008 02 432-563 * Planet 1 Screen data GREEN/YELLOW 432-435 last block $1E00-$1FFF Part E w% 1B0 2DF2 04 436-467 fourth block $2000-$2FFF Part D w% 1B4 1FF2 20 468-499 third block $3000-$3FFF Part C w% 1D4 1FF2 20 500-531 second block $4000-$4FFF Part B w% 1F4 1FF2 20 532-563 first block $5000-$5FFF Part A w% 214 1FF2 20 564-567 * Player shape data by hand 568-569 * Extra character data w% 238 2008 02 570-573 * Car animation data w% 23A 2008 04 574 * Extra character position data by hand 575-644 Win Game program - cannot go past $6000 w% 23F 4000 45 646-687 } for Graphics 10 screen { w% 286 2000 2B 688-693 } change to FF FF 06 20 00 3F { w% 2B0 34F0 06 697-704 character set first screen w% 2B9 2000 08 705-712 character set second screen w% 2C1 2000 08 713-720 Information character set w% 2C9 2000 08 Data in chadata file for Mac65 use Change screen blocks to FF FF 00 20 80 30 00 00 Change character sets to FF FF 06 20 10 24 Disk 1 Side 2 1-5 FREE 6-13 Planet 2 character set w% 06 2000 08 14-23 explosion data w% 0E 2008 08 w% 16 2008 02 24-155 Planet 2 Screen Data WATERWORLD 24-27 last block $1E00-$1FFF Part E w% 18 2DF2 04 28-59 fourth block $2000-$2FFF Part D w% 1C 1FF2 20 60-91 third block $3000-$3FFF Part C w% 3C 1FF2 20 92-123 second block $4000-$4FFF Part B w% 4C 1FF2 20 124-155 first block $5000-$5FFF Part A w% 5C 1FF2 20 156-159 Player shape data by hand 160-161 Extra character data w% A0 2008 02 162-165 Car animation data w% A2 2008 04 166 extra character position data by hand 167-174 Planet 3 character set w% A7 2000 08 175-184 Explosion Data w% AF 2008 08 w% B7 2008 02 185-316 Planet 3 Screen Data GRASS/BUSHES 185-188 last block $1E00-$1FFF Part E w% B9 2DF2 04 189-220 fourth block $2000-$2FFF Part D w% BD 1FF2 20 221-252 third block $3000-$3FFF Part C w% DD 1FF2 20 253-284 second block $4000-$4FFF Part B w% FD 1FF2 20 285-316 first block $5000-$5FFF Part A w% 11D 1FF2 20 317-320 Player shape data by hand 321-322 Extra character data w% 141 2008 02 323-326 Car animation data w% 153 2008 04 327 extra character position data by hand 328-335 Planet 4 character set w% 148 2000 08 336-345 Explosion Data w% 150 2008 08 w% 158 2008 02 346-477 Planet 4 Screen Data BLUE ARTIFICIAL 346-349 last block $1E00-$1FFF Part E w% 15A 2DF2 04 350-381 fourth block $2000-$2FFF Part D w% 15E 1FF2 20 382-413 third block $3000-$3FFF Part C w% 17E 1FF2 20 414-445 second block $4000-$4FFF Part B w% 19E 1FF2 20 446-477 first block $5000-$5FFF Part A w% 1BE 1FF2 20 478-481 Player shape data by hand 482-483 Extra character data w% 1E2 2008 02 484-487 Car animation data w% 1EA 2008 04 488 extra character position data by hand 489-496 Planet 5 character set w% 1E9 2000 08 497-506 Explosion Data w% 1F1 2008 08 w% 1F9 2008 02 507-638 Planet 5 Screen Data CRATERS 507-510 last block $1E00-$1FFF Part E w% 1FB 2DF2 04 511-542 fourth block $2000-$2FFF Part D w% 1FF 1FF2 20 543-574 third block $3000-$3FFF Part C w% 21F 1FF2 20 575-606 second block $4000-$4FFF Part B w% 23F 1FF2 20 607-638 first block $5000-$5FFF Part A w% 25F 1FF2 20 639-642 Player shape data by hand 643-644 Extra character data w% 283 2008 02 645-648 Car animation data w% 285 2008 04 649 extra character position data by hand 650-654 FREE 655-661 Planet 2 Level 1 attack info w% 28F 2000 07 662-668 Planet 2 Level 2 attack info w% 296 2000 07 669-675 Planet 3 Level 1 attack info w% 29D 2000 07 676-682 Planet 3 Level 2 attack info w% 2A4 2000 07 683-689 Planet 4 Level 1 attack info w% 2AB 2000 07 690-696 Planet 4 Level 2 attack info w% 2B2 2000 07 697-703 Planet 5 Level 1 attack info w% 2B9 2000 07 704-710 Planet 5 Level 2 attack info w% 2C0 2000 07 711-712 FREE 713-720 Information character set w% 2C9 2000 08 Data in chadatafile for Mac64 use Main Game Memory Layout Location Memory use $0500-$05FF Variables $0600-$0640 extra character position data load $0641-$06FF Variables $0700-$07FF Display List, Variables $0800-$0BFF Character set 1 inform load $0C00-$0FFF Character set 2 game load $1000-$17FF P/M graphics $1800-$18FF instrument panel $1900-$1DFF explosion data $1E00-$5FFF scrolling screen memory load $1E00-$1FFF last block $2000-$2FFF fourth block $3000-$3FFF third block $4000-$4FFF second block $5000-$5FFF first block $6000-$BCFF game program $BD00-$BEFF player shape data load $BF00-$BFFF extra character data load variable game level information load variable tank animation data load VERTICAL ATTACK VARIABLES 255=no horizontal movement on blocks $05F6 horizontal speed 0=fastest higher the number = slower no $0538 game delay - higher number slows program more $05E1 hitside - 0=straight down 10=change direction 100=offscreen $05E2 vertical speed - 0=slowest 1=medium 2=fastest $0593 attack type - 255=cannot be shot (only for single colour) 100=multicolour 10=side by side 1=single no $05E0 gun attack - 0=none 10=only ground 100=air and ground 150=air only no $068D missile speed - 0=fastest 1=slowest 2,3,4 = bigger = faster no size - 0=normal 1=large no $05E6 pointer P2 Data - points to shape information no $05F7 pointer P3 Data - points to shape information $06F3 StartDirP2 - 0=down 10=right 100=left 255=random 200=toward you $06F4 StartDirP3 - 0=down 10=right 100=left 255=random 200=toward you $05E7 leftstart - 50=largesize 49=normal 0=can be offscreen $05E8 rightstart - 190=largesize 199=normal 250=can be offscreen $05E4 VType - 220=blocks 200=formations 210=same start location 230=random 0-99=shipsset+from table $06F1 HorizStartP2 - horizontal location of ship at top of screen $06F2 HorizStartP3 - horizontal location of ship at top of screen $0645 ChangeDirP2 - 100=no change 255=random direction 1=left 2=right 0=down $0646 ChangeDirP3 - 100=no change 255=random direction 1=left 2=right 0=down $0641 Also used as horizontal counter for blocks ChangeVertP2 - 255=random height other number=height of change $0642 ChangeVertP2 - 255=random height other number=height of change $0647 ChangeDirtwoP2 - same as ChangeDirP2 {for formations P2 controls $0648 ChangeDirtwoP3 - same as ChangeDirP3 {for formation 1 $0643 ChangeDirtwoP2 - same as ChangeVertP2 {P3 controls formation 2 $0644 ChangeDirtwoP3 - same as ChangeVertP3 { $0649 number - 0=all ships on other=every second ship line off $06FD colour P2 - position in colourtable to get colour from for Player 2 $06FE colour P3 - position in colourtable to get colour from for Player 3 $06FF colourcont - 0=all same colour 1=random 2 colours 3=random 4 colours 7=randomly 8 colours $064B scorevalue - 0=50 1=70 2=100 3=130 4=190 5=230 6=250 7=310 8=400 9=500 10=650 $064C Bangdelay - corresponds to vertical speed 9=slow 8=medium 3=fast $064A Formation - 0=not formation 1= -= for multi 7= == for side by side 13=-==- for single $0664 GunbaseDiff - 0=only grass guns 7=only small building guns, 14=only big bldg 21=all bldg guns 29=all but hidden guns 25=Just hidden 42=all on TYPE 2 ATTACK VARIABLES missiles = 50 timed small mines = 150 counter big mines = 100 counter bounce ships = 200 timed reverse ships = 250 timed Diff1-- air guns-- missile speed 0=fastest 1=slowest 2,3,4 bigger=faster $0680 big mine --------------------- small mine -- missile speed 0=fastest 1=slowest 2,3,4 bigger=faster $0680 bounceship -- missile speed 0=fastest 1=slowest 2,3,4 bigger=faster $0680 reverse ship - missile speed 0=fastest 1=slowest 2,3,4 bigger=faster $0680 Diff2-- dir guns -- number of shots 0=all 4 10=2 only missiles $05E3 big mine --------------------- small mine -- type of Dir attack 0=none 10=only ground 100=air+ground 150=only air $05E0 bounce ship-- type of Dir attack 0=none 10=only ground 100=air+ground 150=only air $05E0 reverse ship- type of Dir attack 0=none 10=only ground 100=air+ground 150=only air $05E0 Diff3-- Dir guns --------------------- big mine --------------------- small mine -- vertical speed 0=slow 1=fast bounce ship 2=slowest 1=medium 0=fastest $06CB reverse ship vertical speed 2=slowest 1=medium 0=fastest $06CB Diff4-- Dir guns --------------------- big mine --------------------- small mine --------------------- bounce ship 2=slowest 1=medium 0=fastest $06CB reverse ship 2=slowest 1=medium 0=fastest $06CB Diff5-- Dir guns --------------------- big mine - is there horizontal movement 10=yes 0=no $069B small mine - is there horizontal movement 10=yes 0=no $06AB bounce ship - is there direction change 10=yes 0=no $0660 reverse ship - kind of reverse ships 255=random 1=off horiz $0661 0=come on there reverse Diff6-- Dir guns --------------------- big mine - fragment speed 0=fastest 1=slowest 2,3,4 bigger=faster $0699 small mine - fragment speed 0=fastest 1=slowest 2,3,4 bigger=faster $0699 bounce ship - can it start at bottom 255=random 0=top 1=bottom $065F reverse ship - number of ships on screen 0=all 4 4=2 at top 8=2 at bottom 12=2 top, 1 bottom 16=1 top, 2 bottom Diff7-- All the same ----- 0=only grass guns, 7=small bldg guns, 14=only big bldgs guns, 21=all bldg guns, 28=all except hidden guns, 35=just hidden guns, 42=all on $0664 Player shape data layout Sector 564 Sector 565 00\Frame4 must all be zero 00 Frame4 must all be zero 08/ 08 10\Frame3 10 Frame3 18/ 18 Multicolour 20\Frame2 20 Frame2 explosion data 28/ 28 30\Frame1 30 Frame1 P3 red 38/ 38 40 40 48 Frame4 must all be zero 48 Multicolour ship 1 P2 50 50 58 Frame3 58 Multicolour ship 1 P3 60 Multicolour 60 68 Frame2 explosion data 68 Multicolour ship 2 P2 70 70 78 Frame1 P2 yellow 78 Multicolour ship 2 P3 Sector 566 Sector 565 00\ 00 08/Multicolour ship3 P2 08 10\ 10 18/Multicolour ship3 P3 18 20\ 20 28/Indestructible block 28 30\ 30 38/Side by side ship 1 P2 38 40\ 40 48/Side by side ship 1 P3 48 50\ 50 58/Side by side ship 2 P2 58 60\ 60 68/Side by side ship 2 P3 68 70\ 70 78/Single colour ship 1 78 Secondary Game Information - all information below relates to Secondary Game only Disk 2 Side 1 and Side 2 Layout 1-16 Load program and game data w% 1 B000 10 17-87 screen w% 11 2002 47 } Each Planet 88-95 set Planet 1 w% 58 2000 08 } takes up 96-107 animation w% 68 2000 04 w% 60 2000 08 } 91 sectors 108-178 screen w% 6C 2002 47 179-186 set Planet 2 w% B3 2000 08 187-198 animation w% 68 2000 04 w% BB 2000 08 199-269 screen w% C7 2002 47 270-277 set Planet 3 w% 10E 2000 08 278-289 animation w% 68 2000 04 w% 116 2000 08 290-360 screen w% 122 2002 47 361-368 set Planet 4 w% 169 2000 08 369-380 animation w% 68 2000 04 w% 171 2000 08 381-451 screen w% 17D 2002 47 452-459 set Planet 5 w% 1C4 2000 08 460-471 animation w% 68 2000 04 w% 1CC 2000 08 472-678 Secondary Game Program w% 1D8 3280 CF 679-707 Game program extra data w% 2A7 9A00 1C 708 Difficulty Information Planet 1 by hand ie. use 709 Difficulty Information Planet 2 by hand sector 710 Difficulty Information Planet 3 by hand editor 711 Difficulty Information Planet 4 by hand 712 Difficulty Information Planet 5 by hand 713-720 Text character set w% 2C9 2000 08 Character set change Header FF FF 06 20 10 24 Screen file change Header FF FF 00 20 80 48 Memory Locations Location Game Memory Layout $0400-$05FF game variables $0600-$06FF robot variables $0700-$07FF Display List permanent game variables $0800-$2BFF Screen Memory load $2CC0-$2C7F Text Memory $2C80-$327F Animation data for Robots load $3280-$99FF Secondary game program load $9A00-$A7FF Extra game data load $A800-$ABFF Game character set load $AC00-$AFFF Text character set load $B000-$B7FF Load program and game data $B800-$BFFF Player missile memory and buffer space Sector 708 Planet 1 709 Planet 2 710 Planet 3 711 Planet 4 712 Planet 5 Difficulty sector layout $B800 Trap 113 } 1 = explosion trap 2 = squash trap $B801 Trap 114 } 3 = missile trap 4 = electric trap $B802 Trap 115 } 5 = light trap 6 = broken gun trap $B803 Trap 116 } 7 = energy field trap 8 = gas trap $B804 Trap 117 } 255= random type $B805 Trap 113 } $B806 Trap 114 } random control $B807 Trap 115 } number of possible choices $B808 Trap 116 } 0, 1, 3, 7 $B809 Trap 117 } $B80A Trap 113 } $B80B Trap 114 } position in trap table to start from $B80C Trap 115 } 1 - 8 $B80D Trap 116 } $B80E Trap 117 } $B80F squash trap speed control higher = faster $B810 missile trap speed control horizontal higher = faster $B811 missile trap speed control vertical higher = faster $B812 electric trap delay before grid coming on high = longer $B813 light trap length higher = longer $B814 broken gun length low byte $B815 broken gun length high byte $B816 energy trap length low byte $B817 energy trap length high byte $B818 gas trap length low byte $B819 gas trap length high byte $B81A paralyser length delay higher = longer $B81B speed of enemy players slowest = 1 higher = faster $B81C number of hits needed to kill player follower $B81D maximum number of mines to be layed 20 max $B81E mine active time higher = longer $B81F randomness of laying mines higher = more often $B820 small robots number on screen maximum = 24 $B821 small robots movement speed 0 = fastest higher=slower $B822 small robots active time 1 - 255 $B823 randomness of generating small robots 0 - 255 higher = more $B824 number of hits to destroy a generator 1 - 255 $B825 are hidden walls to be shown when touched $99 = yes $B826 recognition generator low byte position 1 $B810 recognition generator low byte position 1 $B810 number of type 1 robots 4 - 40 step 4 4 =1 40 = 10 Note: Player = technical term which means using the Player-Missile sprite hardware. Atari always use the term "Player" for sprite hardware. I think the Atari Player-Missile specs are: 4 Players and 4 missiles are available. If you're not using missiles, then a 5th player is available. See Atari related documents about the Atari P-M hardware for Atari 800/etc computers.