| 1 | TODO LIST: |
| 2 | |
| 3 | - Update README |
| 4 | - Write functions for moving wumpus, player movement, player shooting, parsing player commands. |
| 5 | - Write a function 'get highest tunnel index' for use in the 'check for pits/bats/wumpus' functions. |
| 6 | - Double-check per-file TODOs for critical tasks. |
| 7 | - Double-check #includes for all subroutines. |
| 8 | - Re-order subroutines in all files for readability. |
| 9 | |
| 10 | ================================================================================ |
| 11 | |
| 12 | # Subroutine Labels # |
| 13 | |
| 14 | NSSVTTTTTTTTSSSSSSSSN | Mark: 11111111 00000000 (wump_kill) |
| 15 | NSSVTTTTTTTTSSSSSSSTN | Mark: 11111111 00000001 (kill_wump) |
| 16 | NSSVTTTTTTTTSSSSSSTSN | Mark: 11111111 00000010 (no_arrows) |
| 17 | NSSVTTTTTTTTSSSSSSTTN | Mark: 11111111 00000011 (shoot_self) |
| 18 | NSSVTTTTTTTTSSSSSTSSN | Mark: 11111111 00000100 (jump) |
| 19 | NSSVTTTTTTTTSSSSSTSTN | Mark: 11111111 00000101 (pit_kill) |
| 20 | NSSVTTTTTTTTSSSSSTTSN | Mark: 11111111 00000110 (pit_survive) |
| 21 | NSSVTTTTTTTTSSSSSTTTN | Mark: 11111111 00000111 (please_seed_rng) |
| 22 | NSSVTTTTTTTTSSSSTSSSN | Mark: 11111111 00001000 (problem_with_yes_no_answer) |
| 23 | NSSVTTTTTTTTSSSSTSSTN | Mark: 11111111 00001001 (instructions) |
| 24 | NSSVTTTTTTTTSSSSTSTSN | Mark: 11111111 00001010 (cave_description) |
| 25 | |
| 26 | NSSVTSSSSSSSN | MARK: 10000000 (wump) |
| 27 | NSSVTSSSSSSTN | MARK: 10000001 (set_config_values) |
| 28 | NSSVTSSSSSTSN | MARK: 10000010 (wump_init) |
| 29 | NSSVTSSSSSTTN | MARK: 10000011 (seed_rng) |
| 30 | NSSVTSSSSTSSN | MARK: 10000100 (build_cave) |
| 31 | NSSVTSSSSTSTN | MARK: 10000101 (populate_cave) |
| 32 | NSSVTSSSSTTSN | MARK: 10000110 (clear_cave_data) |
| 33 | NSSVTSSSSTTTN | MARK: 10000111 (generate_cave_hop_length) |
| 34 | NSSVTSSSTSSSN | MARK: 10001000 (get_tunnel_destination) |
| 35 | NSSVTSSSTSSTN | MARK: 10001001 (set_tunnel_destination) |
| 36 | NSSVTSSSTSTSN | MARK: 10001010 (get_random_room) |
| 37 | NSSVTSSSTSTTN | MARK: 10001011 (get_room_struct_size) |
| 38 | NSSVTSSSTTSSN | MARK: 10001100 (room_has_bats) |
| 39 | NSSVTSSSTTSTN | MARK: 10001101 (room_has_pits) |
| 40 | NSSVTSSSTTTSN | MARK: 10001110 (build_circular_tunnels) |
| 41 | NSSVTSSTSSSSN | MARK: 10010000 (set_bats) |
| 42 | NSSVTSSTSSSTN | MARK: 10010001 (set_pits) |
| 43 | NSSVTSSTSSTSN | MARK: 10010010 (reset_cave_population) |
| 44 | NSSVTSSTSSTTN | MARK: 10010011 (populate_bats) |
| 45 | NSSVTSSTSTSSN | MARK: 10010100 (populate_pits) |
| 46 | NSSVTSSTSTSTN | MARK: 10010101 (place_player) |
| 47 | NSSVTSSTSTTSN | MARK: 10010110 (build_random_tunnels) |
| 48 | NSSVTSSTSTTTN | MARK: 10010111 (get_next_tunnel_slot) |
| 49 | NSSVTSSTTSSSN | MARK: 10011000 (get_answer) |
| 50 | !!!NSSVTSSTTSSTN | MARK: 10011001 (get_line) |
| 51 | NSSVTSSTTSTSN | MARK: 10011010 (wump_loop) |
| 52 | NSSVTSSTTSTTN | MARK: 10011011 (print_cave_description) |
| 53 | NSSVTSSTTTSSN | MARK: 10011100 (are_bats_near) |
| 54 | NSSVTSSTTTSTN | MARK: 10011101 (are_pits_near) |
| 55 | NSSVTSSTTTTSN | MARK: 10011110 (is_wumpus_near) |
| 56 | NSSVTSSTTTTTN | MARK: 10011111 (is_wumpus_very_near) |
| 57 | NSSVTSTSSSSSN | MARK: 10100000 (room_has_wumpus) |
| 58 | NSSVTSTSSSSTN | MARK: 10100001 (print_room_stats) |
| 59 | |
| 60 | ================================================================================ |
| 61 | |
| 62 | # Heap Assignments # |
| 63 | |
| 64 | GAME_DATA_BASE = 0x1000 |
| 65 | |
| 66 | GAME_DATA_BASE = Number of rooms in cave |
| 67 | GAME_DATA_BASE+001 = Number of pits |
| 68 | GAME_DATA_BASE+002 = Number of bats |
| 69 | GAME_DATA_BASE+003 = Number of links per room |
| 70 | GAME_DATA_BASE+004 = Maximum arrow flight distance |
| 71 | GAME_DATA_BASE+005 = Number of arrows |
| 72 | GAME_DATA_BASE+006 = Player location |
| 73 | GAME_DATA_BASE+007 = Wumpus location |
| 74 | |
| 75 | ROOM_DATA_BASE = 0x2000 |
| 76 | Each room is structured as: |
| 77 | BASE+0 = bool:contains_pit? (valid options are 0 or 1) |
| 78 | BASE+1 = bool:contains_bat? (valid options are 0 or 1) |
| 79 | BASE+2 = int:connected room (-1 indicates no tunnel, 0 or greater is the index of the destination room) |
| 80 | ... |
| 81 | BASE+n = int:connected room (last: see 'links per room') |
| 82 | |
| 83 | USER_INPUT_BUFFER = 0x3000 |