added level codes and some cosmetix; vm code file is xored now (to prevent easy level...
[awish.git] / asm / game.awa
blob656a4d1be27b29a0bf80fda84b6ad5e34ffb7c05
1 deftvar: prof_dir        ; used everywhere (PDIR_XXX)
3 ; used in fanchecks
4 deftvar: game_fan_left_v   ; have left working fan?
5 deftvar: game_fan_right_v  ; have right working fan?
6 deftvar: game_fan_dx_v     ; !0: some fan in effect
8 ; used in 'monster death'
9 deftvar: monster_tid
12 const: PSPR_STANDING = 0
13 const: PSPR_WALKING_LAST = 9
14 const: PSPR_TURNING = 10
15 const: PSPR_FACING = 11
16 const: PSPR_JUMPING = 12
17 const: PSPR_TAKING0 = 13
18 const: PSPR_TAKING1 = 14
19 const: PSPR_USING = 15
20 const: PSPR_CLOSED_EYES = 16
21 const: PSPR_LYING_DEAD = 19
22 const: PSPR_DRILLING0 = 20
23 const: PSPR_DRILLING1 = 21
24 const: PSPR_HARRY_EATS_PROF_START = 33
25 const: PSPR_HARRY_EATS_PROF_END = 38
28 const: PDIR_LEFT   = -1
29 const: PDIR_RIGHT  =  1
30 const: PDIR_FACING =  0
33 game_load_level:
34   bsr kill_all_threads
35   ;
36   set [item_id], 0
37   set [spr_bank], BANK_PROF
38   set [spr_num], PSPR_FACING
39   set [spr_dir], DIR_LEFT
40   ;
41   jlt .bad_level, [cur_level], 0
42   jge .bad_level, [cur_level], [max_level]
43   jmp .do_load
44 .bad_level:
45   set [cur_level], 0
46 .do_load:
47   set [level_code_len], 6
48   mul [cur_level], [level_code_len], [level_code_ofs]
49   add [level_code_ofs], level_codes
50   ;
51   rst FRST_LOAD_LEVEL, [cur_level]
52   jne quit_program, [rst_result], 0
53   ;
54   bsr prof_fix_position
55   ret
58 entry_game_start:
59   rst FRST_ML_GAME
60   set [cur_level], 0
61   /*
62   set [cur_level], 11
63   set [cur_level], 16
64   set [cur_level], 13
65   set [cur_level], 12
66   */
68 game_restart_level:
69   bsr clear_stack
70   bsr kill_all_threads
71   ;
72   set [key_quit], 0
73   set [key_start], 0
74   ;
75   set [key_left], 0
76   set [key_right], 0
77   set [key_up], 0
78   set [key_down], 0
79   set [key_take], 0
80   set [key_use], 0
81   set [key_minimap], 0
82   ;
83   set [key_fall_cheat], 0
84   set [key_walk_cheat], 0
85   set [key_plev_cheat], 0
86   set [key_nlev_cheat], 0
87   ;
88   ;set [prof_fall_count], 0
89   set [pos_tx], 0
90   set [pos_ty], 0
91   set [prof_item], 0
92   set [monster_tid], -666
93   ;
94   bsr game_load_level
95   ;
96   // move first item to player
98   set [126], [pos_y]
99   sub [126], 9
100   set pos_x, [pos_x], 1
101   set pos_y, [126], 1
103   ;
104   // set lift
106   psh [pos_x]
107   psh 1
108   add
109   ;
110   psh [pos_y]
111   psh 0
112   sub
113   ;
114   msf 7
116   ;
117   jmp game_facing_loop_w2f
120 include: game/utils.awa
121 include: game/walkcheck.awa
122 include: game/falling.awa
123 include: game/fanchecks.awa
124 include: game/dodie.awa
125 include: game/scrolls.awa
126 include: game/doors.awa
127 include: game/sidemove.awa
128 include: game/loops_main.awa
129 include: game/jumps.awa
130 include: game/nono.awa
131 include: game/check_do_earth.awa
132 include: game/frame_common.awa