diff --git a/JumpingJack/jack.asm b/JumpingJack/jack.asm index bf036c9..7e8b2b9 100644 --- a/JumpingJack/jack.asm +++ b/JumpingJack/jack.asm @@ -362,7 +362,7 @@ on_vram_acc: OUT (SYS_DD17PB), A ; Turn off ROM VideoRAM @ 0xC000 wait_game_start: - LD HL, (random_w) ;= 0x13C6 + LD HL, (random_seed) ;= 0x13C6 LD C, 16 .i_rnd0: LD A, H @@ -373,7 +373,7 @@ wait_game_start: .i_rnd1: DEC C JP NZ, .i_rnd0 - LD (random_w), HL ; 0x13C6 + LD (random_seed), HL ; 0x13C6 LD HL, (monstr_pos) ; 0x27AC LD C, 16 @@ -414,38 +414,38 @@ game_start_ent: NOP CALL clear_screen LD D, 0x20 - LD A, (game_line) ;= 0x20 + LD A, (current_level_line) ;= 0x20 LD HL, first_lvl0_addr - LD (j_addr_1), HL ;= 0x133D + LD (level_gen_ptr_1), HL ;= 0x133D LD HL, first_lvl1_addr - LD (j_addr_2), HL ;= 0x13FD -LAB_ram_030b: + LD (level_gen_ptr_2), HL ;= 0x13FD +generate_level_loop: PUSH AF - LD HL, (random_w) ;= 0x13C6 + LD HL, (random_seed) ;= 0x13C6 LD C, 0x10 -LAB_ram_0311: +rand_seed_loop: LD A, H ADD HL, HL AND 0x60 - JP PE, LAB_ram_0319 + JP PE, rand_seed_skip INC HL -LAB_ram_0319: +rand_seed_skip: DEC C - JP NZ, LAB_ram_0311 - LD (random_w), HL ;= 0x13C6 + JP NZ, rand_seed_loop + LD (random_seed), HL ;= 0x13C6 LD B, H POP AF CP B - JP NC, LAB_ram_043d - CALL j_fill_6_zero_1 -LAB_ram_0329: + JP NC, fill_level_data1 + CALL fill_6_zero_1 +level_gen_loop2: LD B, L CP B - JP NC, LAB_ram_0460 - CALL j_fill_6_zero_2 -LAB_ram_0331: + JP NC, fill_level_data2 + CALL fill_6_zero_2 +level_gen_loop3: DEC D - JP NZ, LAB_ram_030b + JP NZ, generate_level_loop LD A, 0x10 OUT (SYS_DD17PB), A ; VideoRAM @0xC000 no ROM CALL clear_screen @@ -457,10 +457,10 @@ LAB_ram_0331: LD BC, j_arr_src_00 LD DE, lvl_plane_0 LD A, 0x1 -LAB_ram_034b: +draw_bottom_lines_loop: PUSH AF LD A, 0x20 -j_draw_btm_line: +draw_bottom_line_loop: PUSH AF LD A, (BC) LD (HL), A ;= db @@ -472,7 +472,7 @@ j_draw_btm_line: INC DE POP AF DEC A - JP NZ, j_draw_btm_line + JP NZ, draw_bottom_line_loop LD A, H SUB 0x20 SUB 0x20 @@ -480,31 +480,31 @@ j_draw_btm_line: INC L POP AF DEC A - JP NZ, LAB_ram_034b + JP NZ, draw_bottom_lines_loop POP HL POP DE POP BC POP AF LD HL, 0xc0dc ;= db - LD (j_player_addr), HL ;= 0xC0C8 + LD (player_screen_addr), HL ;= 0xC0C8 ; Lifes at start LD A, 10 -j_draw_nxt_life: - LD (j_lifes_param), A ;= 0x1 - CALL draw_scene - LD HL, (j_player_addr) ;= 0xC0C8 +draw_lives_loop: + LD (lives_counter), A ;= 0x1 + CALL render_player_and_scene + LD HL, (player_screen_addr) ;= 0xC0C8 INC H INC H - LD (j_player_addr), HL ;= 0xC0C8 - LD A, (j_lifes_param) ;= 0x1 + LD (player_screen_addr), HL ;= 0xC0C8 + LD A, (lives_counter) ;= 0x1 DEC A - JP NZ, j_draw_nxt_life + JP NZ, draw_lives_loop DEC H DEC H - LD (j_last_live_addr), HL ;= 0xD2DC + LD (last_life_screen_addr), HL ;= 0xD2DC LD HL, 0xc0c8 ;= db - LD (j_player_addr), HL ;= 0xC0C8 + LD (player_screen_addr), HL ;= 0xC0C8 ; -------------------------------------------------- ; Draw treashure chest @@ -513,14 +513,14 @@ j_draw_nxt_life: PUSH BC PUSH DE PUSH HL - LD HL, (j_chest_addr) ;= 0xC400 + LD HL, (chest_screen_addr) ;= 0xC400 LD BC, j_chest_c0 ; treashure chest color bit 0 LD DE, j_chest_c1 ; treashure chest color bit 1 LD A, 24 -j_treasure_chest: +draw_treasure_chest_loop: PUSH AF LD A, 3 -LAB_ram_03a6: +draw_chest_row_loop: PUSH AF LD A, (BC) LD (HL), A ;= db @@ -532,7 +532,7 @@ LAB_ram_03a6: INC DE POP AF DEC A - JP NZ, LAB_ram_03a6 + JP NZ, draw_chest_row_loop LD A, H SUB 0x3 SUB 0x3 @@ -540,20 +540,20 @@ LAB_ram_03a6: INC L POP AF DEC A - JP NZ, j_treasure_chest + JP NZ, draw_treasure_chest_loop POP HL POP DE POP BC POP AF -draw_game_scene: - CALL draw_levl_lines - CALL draw_levl_lines - CALL handle_monster +main_game_loop: + CALL draw_level_lines + CALL draw_level_lines + CALL update_and_render_monster CALL player_monstr_hit ; Draw "fire" if active - LD A, (is_fire) + LD A, (fire_active_flag) OR A CALL NZ, handle_fire @@ -583,116 +583,116 @@ draw_game_scene: JP Z, handle_left_key CP KEY_RIGHT - JP Z, handle_right_key + JP Z, handle_player_move_right CP KEY_UP - JP Z, j_key_up + JP Z, handle_player_jump CP ASCII_SP JP Z, handle_fire_key CP 'C' - JP Z, handle_color_key + JP Z, change_color_palette CP CTRL_C JP Z, exit_to_cpm NOP -after_switch_keys: - LD HL, (j_player_addr) ;= 0xC0C8 +process_game_frame: + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, H CP 0xbe - JP Z, draw_game_scene + JP Z, main_game_loop CP 0xfe - JP Z, draw_game_scene - CALL draw_scene + JP Z, main_game_loop + CALL render_player_and_scene CALL player_on_floor - JP draw_game_scene + JP main_game_loop ; -------------------------------------------------- ; Change palette [COL3:1] ; -------------------------------------------------- -handle_color_key: - LD A, (save_vmode) ;= 0x62 at start +change_color_palette: + LD A, (save_video_mode) ;= 0x62 at start INC A CP 0x67 ; COL3:1 == 111b ? - JP Z, .set_col000 -.set_color_mode: - LD (save_vmode), A + JP Z, .reset_color_pal +.apply_color_mode: + LD (save_video_mode), A OUT (VID_DD67PB), A ; [VSU, C/M, FL3:1, COL3:1] - JP after_switch_keys + JP process_game_frame -.set_col000: +.reset_color_pal: LD A, 0x60 - JP .set_color_mode + JP .apply_color_mode -LAB_ram_043d: +fill_level_data1: PUSH HL PUSH DE PUSH BC PUSH AF LD C, 0x3 - LD HL, (j_addr_1) ;= 0x133D -LAB_ram_0446: + LD HL, (level_gen_ptr_1) ;= 0x133D +fill_ones_loop1: LD (HL), 0xff INC HL DEC C - JP NZ, LAB_ram_0446 + JP NZ, fill_ones_loop1 LD C, 0x3 -LAB_ram_044f: +fill_zeros_loop1: LD (HL), 0x00 INC HL DEC C - JP NZ, LAB_ram_044f - LD (j_addr_1), HL ;= 0x133D + JP NZ, fill_zeros_loop1 + LD (level_gen_ptr_1), HL ;= 0x133D POP AF POP BC POP DE POP HL - JP LAB_ram_0329 -LAB_ram_0460: + JP level_gen_loop2 +fill_level_data2: PUSH HL PUSH DE PUSH BC PUSH AF LD C, 0x3 - LD HL, (j_addr_2) ;= 0x13FD -LAB_ram_0469: + LD HL, (level_gen_ptr_2) ;= 0x13FD +fill_ones_loop2: LD (HL), 0xff INC HL DEC C - JP NZ, LAB_ram_0469 + JP NZ, fill_ones_loop2 LD C, 0x3 -LAB_ram_0472: +fill_zeros_loop2: LD (HL), 0x00 INC HL DEC C - JP NZ, LAB_ram_0472 - LD (j_addr_2), HL ;= 0x13FD + JP NZ, fill_zeros_loop2 + LD (level_gen_ptr_2), HL ;= 0x13FD POP AF POP BC POP DE POP HL - JP LAB_ram_0331 + JP level_gen_loop3 ; -------------------------------------------------- ; Fill 6 bytes by zero ; Inp: j_addr_1 -> buffer ; -------------------------------------------------- -j_fill_6_zero_1: +fill_6_zero_1: PUSH HL PUSH DE PUSH BC PUSH AF LD C, 6 - LD HL, (j_addr_1) ;= 0x133D + LD HL, (level_gen_ptr_1) ;= 0x133D .fill_next: LD (HL), 0x00 INC HL DEC C JP NZ, .fill_next - LD (j_addr_1), HL ;= 0x133D + LD (level_gen_ptr_1), HL ;= 0x133D POP AF POP BC POP DE @@ -703,19 +703,19 @@ j_fill_6_zero_1: ; Fill 6 bytes by zero ; Inp: j_addr_2 -> buffer ; -------------------------------------------------- -j_fill_6_zero_2: +fill_6_zero_2: PUSH HL PUSH DE PUSH BC PUSH AF LD C, 6 - LD HL, (j_addr_2) ;= 0x13FD + LD HL, (level_gen_ptr_2) ;= 0x13FD .fill_next: LD (HL), 0x00 INC HL DEC C JP NZ, .fill_next - LD (j_addr_2), HL ;= 0x13FD + LD (level_gen_ptr_2), HL ;= 0x13FD POP AF POP BC POP DE @@ -725,10 +725,10 @@ j_fill_6_zero_2: ; -------------------------------------------------- ; Draw horisontal moved level lines ; -------------------------------------------------- -draw_levl_lines: +draw_level_lines: LD D, full_lvl_size LD HL, last_lvl0_addr ;= 0xBF -dll_prev_hl_d: +scroll_level_left_loop: LD A, (HL) ;= 0xBF CP 0 JP Z, dll_lshift_skip_0 @@ -746,13 +746,13 @@ dll_prev_hl_d: DEC HL DEC HL DEC D - JP NZ, dll_prev_hl_d -dll_lshift_complete: + JP NZ, scroll_level_left_loop +scroll_level_left_done: LD A, (last_lvl0_addr) ;= 0xBF LD (first_lvl0_addr), A LD D, full_lvl_size LD HL, first_lvl1_addr -dll_rshift: +scroll_level_right_loop: LD A, (HL) CP 0 JP Z, dll_rshift_skip_0 @@ -770,16 +770,16 @@ dll_rshift: INC HL INC HL DEC D - JP NZ, dll_rshift -dll_rshift_complete: + JP NZ, scroll_level_right_loop +scroll_level_right_done: LD A, (first_lvl1_addr) LD (last_lvl1_addr), A ;= 0x3 LD A, full_lvl_size - LD (lvl_mrg_ctr), A + LD (level_merge_counter), A LD BC, first_lvl0_addr LD DE, lvl_merged_0 LD HL, first_lvl1_addr -dll_merg_next: +merge_levels_loop: LD A, (BC) OR (HL) CPL @@ -787,18 +787,18 @@ dll_merg_next: INC BC INC DE INC HL - LD A, (lvl_mrg_ctr) + LD A, (level_merge_counter) DEC A - LD (lvl_mrg_ctr), A + LD (level_merge_counter), A OR A - JP NZ, dll_merg_next + JP NZ, merge_levels_loop LD HL, 0xc018 ; draw level line - LD (j_lvl_draw_addr), HL ;= 0xC0B8 + LD (level_draw_addr), HL ;= 0xC0B8 PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (j_lvl_draw_addr) ;= 0xC0B8 + LD HL, (level_draw_addr) ;= 0xC0B8 LD BC, lvl_merged_0 LD DE, lvl_plane_0 LD A, 1 @@ -835,7 +835,7 @@ lvl_ln0_row_nxt: PUSH BC PUSH DE PUSH HL - LD HL, (j_lvl_draw_addr) ;= 0xC0B8 + LD HL, (level_draw_addr) ;= 0xC0B8 LD BC, lvl_merged_1 LD DE, lvl_plane_0 LD A, 0x1 @@ -872,7 +872,7 @@ lvl_ln1_row_nxt: PUSH BC PUSH DE PUSH HL - LD HL, (j_lvl_draw_addr) ;= 0xC0B8 + LD HL, (level_draw_addr) ;= 0xC0B8 LD BC, lvl_merged_2 LD DE, lvl_plane_0 LD A, 0x1 @@ -909,7 +909,7 @@ lvl_ln2_row_nxt: PUSH BC PUSH DE PUSH HL - LD HL, (j_lvl_draw_addr) ;= 0xC0B8 + LD HL, (level_draw_addr) ;= 0xC0B8 LD BC, lvl_merged_3 LD DE, lvl_plane_0 LD A, 0x1 @@ -946,7 +946,7 @@ lvl_ln3_row_nxt: PUSH BC PUSH DE PUSH HL - LD HL, (j_lvl_draw_addr) ;= 0xC0B8 + LD HL, (level_draw_addr) ;= 0xC0B8 LD BC, lvl_merged_4 LD DE, lvl_plane_0 LD A, 0x1 @@ -983,7 +983,7 @@ lvl_ln4_row_nxt: PUSH BC PUSH DE PUSH HL - LD HL, (j_lvl_draw_addr) ;= 0xC0B8 + LD HL, (level_draw_addr) ;= 0xC0B8 LD BC, lvl_merged_5 LD DE, lvl_plane_0 LD A, 1 @@ -1017,22 +1017,22 @@ lvl_ln5_row_nxt: POP AF RET calc_nxt_line_addr: - LD HL, (j_lvl_draw_addr) ;= 0xC0B8 + LD HL, (level_draw_addr) ;= 0xC0B8 LD A, L ADD A, 0x20 LD L, A - LD (j_lvl_draw_addr), HL ;= 0xC0B8 + LD (level_draw_addr), HL ;= 0xC0B8 RET dll_lshift_skip_0: DEC HL DEC D - JP NZ, dll_prev_hl_d - JP dll_lshift_complete + JP NZ, scroll_level_left_loop + JP scroll_level_left_done dll_rshift_skip_0: INC HL DEC D - JP NZ, dll_rshift - JP dll_rshift_complete + JP NZ, scroll_level_right_loop + JP scroll_level_right_done ; -------------------------------------------------- ; Handle player movement to left @@ -1044,9 +1044,9 @@ handle_left_key: PUSH HL LD DE, j_player_tlt_c0 LD HL, j_player_tlt_c1 - LD A, (player_turn_frame) + LD A, (player_anim_frame) OR A - JP Z, LAB_ram_0688 + JP Z, calc_lt_fr_addr_end LD BC, 0x20 calc_lt_fr_addr: ADD HL, BC @@ -1055,14 +1055,14 @@ calc_lt_fr_addr: EX DE, HL DEC A JP NZ, calc_lt_fr_addr -LAB_ram_0688: - LD (player_frame_addr0), HL ;= 0xCFD +calc_lt_fr_addr_end: + LD (player_sprite_addr_0), HL ;= 0xCFD PUSH HL POP BC EX DE, HL - LD (player_frame_addr1), HL ;= 0xE1D + LD (player_sprite_addr_1), HL ;= 0xE1D EX DE, HL - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, 0x10 kl_next_col: PUSH AF @@ -1071,7 +1071,7 @@ kl_next_row: PUSH AF LD A, H CP 0xc0 - JP C, LAB_ram_06d1 + JP C, draw_player_left_skip_row LD A, (BC) LD (HL), A ;= db LD A, (DE) @@ -1079,8 +1079,8 @@ kl_next_row: LD (HL), A ;= db LD A, H CP 0xff - JP Z, LAB_ram_06c3 -LAB_ram_06ac: + JP Z, draw_player_left_skip_col +draw_player_left_next_row: INC H INC BC INC DE @@ -1091,76 +1091,76 @@ LAB_ram_06ac: SUB 0x2 SUB 0x2 LD H, A -LAB_ram_06ba: +draw_player_left_next_col: INC L POP AF DEC A JP NZ, kl_next_col - JP LAB_ram_06d5 -LAB_ram_06c3: + JP draw_player_left_end +draw_player_left_skip_col: POP AF -LAB_ram_06c4: +draw_player_left_skip_row_loop: INC BC INC DE DEC A - JP NZ, LAB_ram_06c4 - LD A, (j_player_addr+1) + JP NZ, draw_player_left_skip_row_loop + LD A, (player_screen_addr+1) LD H, A - JP LAB_ram_06ba -LAB_ram_06d1: + JP draw_player_left_next_col +draw_player_left_skip_row: INC H - JP LAB_ram_06ac -LAB_ram_06d5: + JP draw_player_left_next_row +draw_player_left_end: POP HL POP DE POP BC POP AF - LD A, (player_turn_frame) + LD A, (player_anim_frame) OR A - JP Z, LAB_ram_06f8 + JP Z, handle_left_key_no_turn DEC A -LAB_ram_06e1: - LD (player_turn_frame), A - LD HL, (j_player_addr) ;= 0xC0C8 +update_turn_frame_left: + LD (player_anim_frame), A + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, H CP 0xbe - JP Z, draw_game_scene + JP Z, main_game_loop CP 0xfe - JP Z, draw_game_scene + JP Z, main_game_loop CALL player_on_floor - JP draw_game_scene -LAB_ram_06f8: - LD HL, (j_player_addr) ;= 0xC0C8 + JP main_game_loop +handle_left_key_no_turn: + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, H CP 0xca JP Z, l_key_ca -LAB_ram_0701: +check_left_boundary: CP 0xbe - JP Z, l_key_be + JP Z, left_key_boundary_be DEC H DEC H - LD (j_player_addr), HL ;= 0xC0C8 -LAB_ram_070b: + LD (player_screen_addr), HL ;= 0xC0C8 +move_player_left: LD A, 0x3 - JP LAB_ram_06e1 -l_key_be: + JP update_turn_frame_left +left_key_boundary_be: LD H, 0xfe - LD (j_player_addr), HL ;= 0xC0C8 - JP LAB_ram_070b + LD (player_screen_addr), HL ;= 0xC0C8 + JP move_player_left ; -------------------------------------------------- ; Handle player movement to right ; -------------------------------------------------- -handle_right_key: +handle_player_move_right: PUSH AF PUSH BC PUSH DE PUSH HL LD DE, j_player_trt_c0 LD HL, j_player_trt_c1 - LD A, (player_turn_frame) + LD A, (player_anim_frame) OR A - JP Z, LAB_ram_0734 + JP Z, calc_right_frame_addr_end LD BC, 0x20 calc_rt_fr_addr: ADD HL, BC @@ -1170,14 +1170,14 @@ calc_rt_fr_addr: DEC A JP NZ, calc_rt_fr_addr -LAB_ram_0734: - LD (player_frame_addr0), HL ;= 0xCFD +calc_right_frame_addr_end: + LD (player_sprite_addr_0), HL ;= 0xCFD PUSH HL POP BC EX DE, HL - LD (player_frame_addr1), HL ;= 0xE1D + LD (player_sprite_addr_1), HL ;= 0xE1D EX DE, HL - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, 16 kr_next_col: @@ -1213,16 +1213,16 @@ kr_cont_right: POP AF DEC A JP NZ, kr_next_col - JP LAB_ram_0781 + JP draw_player_right_end kr_coll_right: POP AF -LAB_ram_0770: +draw_player_right_skip_col_loop: INC BC INC DE DEC A - JP NZ, LAB_ram_0770 - LD A, (j_player_addr+1) + JP NZ, draw_player_right_skip_col_loop + LD A, (player_screen_addr+1) LD H, A JP kr_cont_right @@ -1230,72 +1230,72 @@ kr_coll_left: INC H JP kr_cont_left -LAB_ram_0781: +draw_player_right_end: POP HL POP DE POP BC POP AF CALL player_monstr_hit - LD A, (player_turn_frame) + LD A, (player_anim_frame) CP 3 JP Z, kr_last_frame ; next frame INC A -LAB_ram_0791: - LD (player_turn_frame), A - LD HL, (j_player_addr) ;= 0xC0C8 +update_turn_frame_right: + LD (player_anim_frame), A + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, H CP 0xfe - JP Z, draw_game_scene + JP Z, main_game_loop CP 0xbe - JP Z, draw_game_scene + JP Z, main_game_loop CALL player_on_floor - JP draw_game_scene + JP main_game_loop kr_last_frame: - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, H CP 0xc0 - JP Z, LAB_ram_0a4e -LAB_ram_07b1: + JP Z, check_left_key_ca +check_right_boundary: CP 0xfe - JP Z, LAB_ram_07c2 + JP Z, move_player_right_boundary INC H INC H - LD (j_player_addr), HL ;= 0xC0C8 + LD (player_screen_addr), HL ;= 0xC0C8 CALL player_monstr_hit -LAB_ram_07be: +move_player_right: XOR A - JP LAB_ram_0791 + JP update_turn_frame_right -LAB_ram_07c2: +move_player_right_boundary: LD H, 0xbe - LD (j_player_addr), HL ;= 0xC0C8 - JP LAB_ram_07be + LD (player_screen_addr), HL ;= 0xC0C8 + JP move_player_right ; -------------------------------------------------- ; Handle player movement jump up ; -------------------------------------------------- -j_key_up: - LD HL, (j_player_addr) ;= 0xC0C8 +handle_player_jump: + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, L CP 8 - JP Z, draw_game_scene + JP Z, main_game_loop CALL erase_player - LD HL, (j_player_addr) ; Move player coord Up + LD HL, (player_screen_addr) ; Move player coord Up LD A, L SUB 15 ; y-=15 LD L, A - LD (j_player_addr), HL - CALL draw_scene + LD (player_screen_addr), HL + CALL render_player_and_scene ; -------------------------------------------------- ; Play Jump Sound ; -------------------------------------------------- PUSH BC LD BC, 50 -j_bell: +jump_sound_loop: LD A, 0xf OUT (DD67PC), A ;[USER3..1, STB-LP, BELL, TAPE3..1] PUSH HL @@ -1303,11 +1303,11 @@ j_bell: PUSH BC PUSH AF LD DE, 10 -j_buzz_delay1: +jump_sound_delay1: DEC DE LD A, D OR E - JP NZ, j_buzz_delay1 + JP NZ, jump_sound_delay1 POP AF POP BC POP DE @@ -1319,11 +1319,11 @@ j_buzz_delay1: PUSH BC PUSH AF LD DE, 10 -j_buzz_delay2: +jump_sound_delay2: DEC DE LD A, D OR E - JP NZ, j_buzz_delay2 + JP NZ, jump_sound_delay2 POP AF POP BC POP DE @@ -1331,16 +1331,16 @@ j_buzz_delay2: DEC BC LD A, C OR B - JP NZ, j_bell + JP NZ, jump_sound_loop POP BC - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 DEC L - LD A, (player_turn_frame) + LD A, (player_anim_frame) CP 2 JP NC, jmp_next_frame ; Check collision -LAB_ram_0824: +check_jump_collizion: LD A, (HL) ;= db OR A JP NZ, jump_collision @@ -1351,38 +1351,38 @@ LAB_ram_0824: JP NZ, jump_collision CALL erase_player ; no collision, move player up 32px (17+15) - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, L SUB 17 LD L, A - LD (j_player_addr), HL ;= 0xC0C8 - CALL draw_scene - JP draw_game_scene + LD (player_screen_addr), HL ;= 0xC0C8 + CALL render_player_and_scene + JP main_game_loop jump_collision: CALL erase_player ; move player back down - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, L ADD A, 15 LD L, A - LD (j_player_addr), HL ;= 0xC0C8 - CALL draw_scene + LD (player_screen_addr), HL ;= 0xC0C8 + CALL render_player_and_scene CALL draw_death CALL player_on_floor - JP draw_game_scene + JP main_game_loop ; -------------------------------------------------- ; Player on floor? ; -------------------------------------------------- player_on_floor: ; calc player floor addr - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, L ADD A, 16 LD L, A ; hl - floor - LD A, (player_turn_frame) + LD A, (player_anim_frame) CP 2 JP NC, .floor_at_rt ; animation death .chk_floor: @@ -1402,15 +1402,15 @@ player_on_floor: no_floor: ; move player down CALL erase_player - LD HL, (j_player_addr) + LD HL, (player_screen_addr) LD A, L ADD A, 16 LD L, A - LD (j_player_addr), HL + LD (player_screen_addr), HL ; redraw player - CALL draw_scene + CALL render_player_and_scene ; and recheck floor again - LD HL, (j_player_addr) + LD HL, (player_screen_addr) LD A, L ADD A, 16 LD L, A @@ -1423,7 +1423,7 @@ draw_death: PUSH BC PUSH DE PUSH HL - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD BC, j_play_death_c0 LD DE, j_play_death_c1 LD A, 16 @@ -1496,7 +1496,7 @@ dp_dly_nxt2: OR B JP NZ, dp_nxt_beep POP BC - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, L CP 0xc8 JP Z, draw_grave_cross @@ -1504,24 +1504,24 @@ dp_dly_nxt2: check_floor_down: LD A, 16 pl_next_frame: - LD (skip_frames), A - CALL draw_levl_lines - CALL draw_levl_lines - CALL handle_monster + LD (frame_skip_counter), A + CALL draw_level_lines + CALL draw_level_lines + CALL update_and_render_monster CALL player_monstr_hit - LD A, (is_fire) + LD A, (fire_active_flag) OR A CALL NZ, handle_fire - LD HL, (j_player_addr) + LD HL, (player_screen_addr) LD A, L ADD A, 16 LD L, A LD A, (HL) ;= db OR A JP Z, no_floor - LD A, (skip_frames) ;= 0x1 + LD A, (frame_skip_counter) ;= 0x1 DEC A JP NZ, pl_next_frame RET @@ -1529,45 +1529,45 @@ pl_next_frame: ; -------------------------------------------------- ; Draw level and monster ; -------------------------------------------------- -draw_scene: - LD A, (player_turn_frame) +render_player_and_scene: + LD A, (player_anim_frame) LD B, A ADD A, B - LD (player_tf2), A + LD (player_anim_frame_offset), A PUSH AF PUSH BC PUSH DE PUSH HL LD DE, j_arr_src10 LD HL, j_arr_src1 - LD A, (player_tf2) + LD A, (player_anim_frame_offset) OR A - JP Z, jd_frame_0 + JP Z, render_player_frame_done LD BC, 0x20 -LAB_ram_0948: +calc_draw_frame_addr_loop: ADD HL, BC EX DE, HL ADD HL, BC EX DE, HL DEC A - JP NZ, LAB_ram_0948 -jd_frame_0: - LD (player_frame_addr0), HL ;= 0xCFD + JP NZ, calc_draw_frame_addr_loop +render_player_frame_done: + LD (player_sprite_addr_0), HL ;= 0xCFD PUSH HL POP BC EX DE, HL - LD (player_frame_addr1), HL ;= 0xE1D + LD (player_sprite_addr_1), HL ;= 0xE1D EX DE, HL - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, 16 -j_draw_pl_nxt_col: +draw_scene_player_col_loop: PUSH AF LD A, 2 -j_draw_pl_nxt_row: +draw_scene_player_row_loop: PUSH AF LD A, H CP 0xc0 - JP C, LAB_ram_0999 + JP C, draw_scene_skip_row LD A, (BC) LD (HL), A ;= db LD A, (DE) @@ -1575,54 +1575,54 @@ j_draw_pl_nxt_row: LD (HL), A ;= db LD A, H CP 0xff - JP Z, LAB_ram_098b -LAB_ram_0974: + JP Z, draw_scene_skip_col +draw_scene_next_row: INC H INC BC INC DE POP AF DEC A - JP NZ, j_draw_pl_nxt_row + JP NZ, draw_scene_player_row_loop LD A, H SUB 0x2 SUB 0x2 LD H, A -LAB_ram_0982: +draw_scene_next_col: INC L POP AF DEC A - JP NZ, j_draw_pl_nxt_col - JP LAB_ram_099d -LAB_ram_098b: + JP NZ, draw_scene_player_col_loop + JP draw_scene_end +draw_scene_skip_col: POP AF -LAB_ram_098c: +draw_scene_skip_row_loop: INC BC INC DE DEC A - JP NZ, LAB_ram_098c - LD A, (j_player_addr+1) + JP NZ, draw_scene_skip_row_loop + LD A, (player_screen_addr+1) LD H, A - JP LAB_ram_0982 -LAB_ram_0999: + JP draw_scene_next_col +draw_scene_skip_row: INC H - JP LAB_ram_0974 -LAB_ram_099d: + JP draw_scene_next_row +draw_scene_end: POP HL POP DE POP BC POP AF - CALL draw_levl_lines - CALL draw_levl_lines - CALL handle_monster + CALL draw_level_lines + CALL draw_level_lines + CALL update_and_render_monster CALL player_monstr_hit - LD A, (is_fire) + LD A, (fire_active_flag) OR A CALL NZ, handle_fire RET jmp_next_frame: INC H INC H - JP LAB_ram_0824 + JP check_jump_collizion ; -------------------------------------------------- ; Erase player from scene @@ -1632,7 +1632,7 @@ erase_player: PUSH BC PUSH DE PUSH HL - LD HL, (j_player_addr) + LD HL, (player_screen_addr) LD BC, j_player_era_c0 LD DE, j_player_era_c1 LD A, 16 @@ -1671,7 +1671,7 @@ draw_grave_cross: PUSH BC PUSH DE PUSH HL - LD HL, (j_last_live_addr) ;= 0xD2DC + LD HL, (last_life_screen_addr) ;= 0xD2DC LD BC, j_gravecross_c0 LD DE, j_gravecross_c1 LD A, 16 @@ -1703,44 +1703,44 @@ dgc_next_row: POP DE POP BC POP AF - LD HL, (j_last_live_addr) ;= 0xD2DC + LD HL, (last_life_screen_addr) ;= 0xD2DC LD A, H CP 0xc0 - JP Z, is_lost_life + JP Z, handle_lost_life DEC H DEC H - LD (j_last_live_addr), HL ;= 0xD2DC + LD (last_life_screen_addr), HL ;= 0xD2DC JP check_floor_down -is_lost_life: +handle_lost_life: CALL out_game_over -f_init_game: +reinit_game: LD A, 1 - LD (j_monster_off), A + LD (monster_inactive_flag), A XOR A - LD (player_turn_frame), A - LD (is_fire), A + LD (player_anim_frame), A + LD (fire_active_flag), A LD HL, 0xc0c8 ;= db - LD (j_player_addr), HL ;= 0xC0C8 + LD (player_screen_addr), HL ;= 0xC0C8 JP on_vram_acc l_key_ca: LD A, L CP 0x8 - JP Z, LAB_ram_0a58 + JP Z, play_boundary_sound LD A, H - JP LAB_ram_0701 -LAB_ram_0a4e: + JP check_left_boundary +check_left_key_ca: LD A, L CP 0x8 - JP Z, LAB_ram_0a58 + JP Z, play_boundary_sound LD A, H - JP LAB_ram_07b1 -LAB_ram_0a58: + JP check_right_boundary +play_boundary_sound: PUSH BC LD BC, 250 -j_bell1: +boundary_sound_loop: LD A, 0xf OUT (DD67PC), A ; Bell+Tape PUSH HL @@ -1748,11 +1748,11 @@ j_bell1: PUSH BC PUSH AF LD DE, 0x14 -j_bell1_delay1: +boundary_sound_delay1: DEC DE LD A, D OR E - JP NZ, j_bell1_delay1 + JP NZ, boundary_sound_delay1 POP AF POP BC POP DE @@ -1764,11 +1764,11 @@ j_bell1_delay1: PUSH BC PUSH AF LD DE, 0x14 -j_bell1_delay2: +boundary_sound_delay2: DEC DE LD A, D OR E - JP NZ, j_bell1_delay2 + JP NZ, boundary_sound_delay2 POP AF POP BC POP DE @@ -1776,12 +1776,12 @@ j_bell1_delay2: DEC BC LD A, C OR B - JP NZ, j_bell1 + JP NZ, boundary_sound_loop POP BC - LD A, (game_line) ;= 0x20 + LD A, (current_level_line) ;= 0x20 CP 80 - JP Z, final_sound + JP Z, play_final_sound CALL draw_happy_end CALL clear_screen @@ -1826,22 +1826,22 @@ j_bell1_delay2: ; Init to default values XOR A - LD (player_turn_frame), A - LD A, (monstr_per) ;= 0x15 + LD (player_anim_frame), A + LD A, (monster_speed) ;= 0x15 ADD A, 5 - LD (monstr_per), A ;= 0x15 + LD (monster_speed), A ;= 0x15 LD A, 1 - LD (j_monster_off), A - LD A, (game_line) ;= 0x20 + LD (monster_inactive_flag), A + LD A, (current_level_line) ;= 0x20 ADD A, 0x10 - LD (game_line), A ;= 0x20 + LD (current_level_line), A ;= 0x20 JP on_vram_acc ; -------------------------------------------------- ; Play final sound for winner ; -------------------------------------------------- -final_sound: +play_final_sound: PUSH BC LD BC, 250 @@ -1891,7 +1891,7 @@ final_sound: ; -------------------------------------------------- ; Display final message for winner ; -------------------------------------------------- -final_messages: +display_final_messages: CALL clear_screen ; close VRAM access @@ -1979,59 +1979,62 @@ final_messages: LD (curr_color), HL LD A, 16 - LD (game_line), A ;= 0x20 + LD (current_level_line), A ;= 0x20 LD A, 32 - LD (monstr_per), A ;= 0x15 + LD (monster_speed), A ;= 0x15 - JP f_init_game + JP reinit_game -clear_screen: ; Make screen green +; -------------------------------------------------- +; Paint screen to green +; -------------------------------------------------- +clear_screen: PUSH HL PUSH BC PUSH DE PUSH AF - LD A, (save_vmode) ;= 0x62 + LD A, (save_video_mode) ;= 0x62 OUT (VID_DD67PB), A LD HL, 0xc000 LD D, 0x20 - LD A, (BYTE_ram_0cbc) + LD A, (color_mode_selector) AND 0x3 CP 0x00 - JP Z, LAB_ram_0c14 + JP Z, clear_screen_mode0 CP 0x1 - JP Z, LAB_ram_0c1b + JP Z, clear_screen_mode1 CP 0x2 - JP Z, LAB_ram_0c22 + JP Z, clear_screen_mode2 LD B, 0xff LD C, 0xff -LAB_ram_0c00: +clear_screen_loop: LD E, 0xff -j_mv_nx_note: +clear_screen_row_loop: LD (HL), B ;= db INC H LD (HL), C ;= db DEC H INC HL DEC E - JP NZ, j_mv_nx_note + JP NZ, clear_screen_row_loop INC HL INC H DEC D - JP NZ, LAB_ram_0c00 - JP LAB_ram_0c29 -LAB_ram_0c14: + JP NZ, clear_screen_loop + JP clear_screen_end +clear_screen_mode0: LD C, 0x00 LD B, 0x00 - JP LAB_ram_0c00 -LAB_ram_0c1b: + JP clear_screen_loop +clear_screen_mode1: LD B, 0x00 LD C, 0xff - JP LAB_ram_0c00 -LAB_ram_0c22: + JP clear_screen_loop +clear_screen_mode2: LD B, 0xff LD C, 0x00 - JP LAB_ram_0c00 -LAB_ram_0c29: + JP clear_screen_loop +clear_screen_end: POP AF POP DE POP BC @@ -2044,15 +2047,15 @@ LAB_ram_0c29: ; Variables ; -------------------------------------------------- -j_addr_1: +level_gen_ptr_1: dw first_lvl1_addr -j_addr_2: +level_gen_ptr_2: dw lvl_merged_0 -player_frame_addr0: +player_sprite_addr_0: dw j_arr_src1 -player_frame_addr1: +player_sprite_addr_1: dw j_arr_src10 -j_last_live_addr: +last_life_screen_addr: dw 0xD2DC ; -------------------------------------------------- @@ -2314,12 +2317,12 @@ j_draw_rh: ; Inp: HL - pos ; -------------------------------------------------- j_draw_sqare: - LD (square_addr), HL + LD (square_draw_addr), HL PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (square_addr) + LD HL, (square_draw_addr) LD BC, img_square_c0 ;= 0xFF LD DE, img_square_c1 @@ -2391,72 +2394,72 @@ img_square_c1: db 0x90 db 0xc0 -square_addr: +square_draw_addr: dw 0xEC70 ; -------------------------------------------------- ; Move and draw monster ; -------------------------------------------------- -handle_monster: +update_and_render_monster: ; draw at every 4th call - LD A, (monster_int) ; default = 4 + LD A, (monster_update_interval) ; default = 4 DEC A - LD (monster_int), A + LD (monster_update_interval), A OR A RET NZ ; LD A, 4 - LD (monster_int), A ; interval=4 + LD (monster_update_interval), A ; interval=4 ; - LD A, (j_monster_off) + LD A, (monster_inactive_flag) OR A - JP Z, draw_monster + JP Z, render_monster LD HL, (monstr_pos) ;= 0x27AC LD C, 16 -LAB_ram_180f: +monster_randomize: LD A, H ADD HL, HL AND 0x60 - JP PE, LAB_ram_1817 + JP PE, monster_randomize_skip INC HL -LAB_ram_1817: +monster_randomize_skip: DEC C - JP NZ, LAB_ram_180f + JP NZ, monster_randomize LD (monstr_pos), HL ;= 0x27AC - LD A, (monstr_per) ;= 0x15 + LD A, (monster_speed) ;= 0x15 CP H - JP NC, monstr_reset + JP NC, monster_reset_position RET -monstr_reset: +monster_reset_position: LD HL, 0xfe08 - LD (monstr_addr), HL ;= 0xE268 + LD (monster_screen_addr), HL ;= 0xE268 .next: - LD HL, (monstr_addr) ;= 0xE268 + LD HL, (monster_screen_addr) ;= 0xE268 LD A, 0x20 ADD A, L LD L, A - LD (monstr_addr), HL ;= 0xE268 - LD A, (monstr_var1) ;= 0xCC + LD (monster_screen_addr), HL ;= 0xE268 + LD A, (monster_y_target) ;= 0xCC ADD A, 0x33 - LD (monstr_var1), A ;= 0xCC + LD (monster_y_target), A ;= 0xCC LD B, A LD HL, (monstr_pos) ;= 0x27AC LD A, L CP B JP NC, .next XOR A - LD (j_monster_off), A + LD (monster_inactive_flag), A ; -------------------------------------------------- -draw_monster: +render_monster: PUSH AF PUSH BC PUSH DE PUSH HL LD DE, monstr_img_c0 LD HL, monstr_img_c1 - LD A, (monstr_rt) ;= 0x1 + LD A, (monster_dir) ;= 0x1 OR A JP Z, monstr_0 LD BC, 0x60 @@ -2468,13 +2471,13 @@ monstr_no_nxt: DEC A JP NZ, monstr_no_nxt monstr_0: - LD (monstr_src0), HL ;= 0x18FB + LD (monster_sprite_addr0), HL ;= 0x18FB PUSH HL POP BC EX DE, HL - LD (monstr_src1), HL ;= 0x19BB + LD (monster_sprite_addr1), HL ;= 0x19BB EX DE, HL - LD HL, (monstr_addr) ;= 0xE268 + LD HL, (monster_screen_addr) ;= 0xE268 LD A, 16 dm_next_col: PUSH AF @@ -2508,59 +2511,60 @@ dm_ret_right: POP AF DEC A JP NZ, dm_next_col - JP LAB_ram_18b4 + JP dm_end dm_at_right: POP AF -LAB_ram_18a3: +dm_skip_col_loop: INC BC INC DE DEC A - JP NZ, LAB_ram_18a3 - LD A, (monstr_addr+1) + JP NZ, dm_skip_col_loop + LD A, (monster_screen_addr+1) LD H, A JP dm_ret_right dm_at_left: INC H JP dm_ret_left -LAB_ram_18b4: +dm_end: POP HL POP DE POP BC POP AF - LD A, (monstr_rt) ;= 0x1 + LD A, (monster_dir) ;= 0x1 OR A - JP Z, LAB_ram_18d2 + JP Z, monster_move_right XOR A -LAB_ram_18c0: - LD (monstr_rt), A ;= 0x1 - LD HL, (monstr_addr) ;= 0xE268 +monster_move_update: + LD (monster_dir), A ;= 0x1 + LD HL, (monster_screen_addr) ;= 0xE268 LD A, H CP 0xb4 - JP Z, SUB_ram_18d7 + JP Z, monster_reset_state DEC H DEC H - LD (monstr_addr), HL ;= 0xE268 + LD (monster_screen_addr), HL ;= 0xE268 RET -LAB_ram_18d2: +monster_move_right: LD A, 0x1 - JP LAB_ram_18c0 -SUB_ram_18d7: + JP monster_move_update + +monster_reset_state: XOR A - LD (monstr_var1), A ;= 0xCC - LD A, 0x1 - LD (j_monster_off), A + LD (monster_y_target), A ;= 0xCC + LD A, 1 + LD (monster_inactive_flag), A RET ; -------------------------------------------------- ; Monster hit player? ; -------------------------------------------------- player_monstr_hit: - LD HL, (j_player_addr) + LD HL, (player_screen_addr) INC H INC H LD B, H LD D, L - LD HL, (monstr_addr) + LD HL, (monster_screen_addr) LD A, H CP B JP Z, .chl_lo_addr @@ -2568,19 +2572,19 @@ player_monstr_hit: .chl_lo_addr: LD A, L CP D - JP Z, is_lost_life + JP Z, handle_lost_life RET -monstr_per: +monster_speed: db 21 -monster_int: +monster_update_interval: db 4 -monstr_var1: +monster_y_target: db 204 -monstr_rt: +monster_dir: db 1 monstr_img_c1: @@ -2629,33 +2633,33 @@ monstr_img_c0: monstr_pos: dw 0x27AC -monstr_addr: +monster_screen_addr: dw 0xE268 -monstr_src0: +monster_sprite_addr0: dw 0x18FB -monstr_src1: +monster_sprite_addr1: dw 0x19BB ; -------------------------------------------------- ; Handle "Fire" key ; -------------------------------------------------- handle_fire_key: - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, H CP 0xfe - JP NC, draw_game_scene - LD A, (is_fire) + JP NC, main_game_loop + LD A, (fire_active_flag) OR A - JP NZ, draw_game_scene + JP NZ, main_game_loop LD A, 1 - LD (is_fire), A + LD (fire_active_flag), A PUSH AF PUSH BC PUSH DE PUSH HL ; player fire animation - LD HL, (j_player_addr) ;= 0xC0C8 + LD HL, (player_screen_addr) ;= 0xC0C8 LD BC, j_player_firer_c0 LD DE, j_player_firer_c1 @@ -2738,26 +2742,26 @@ delay_hl: fire_continue: NOP LD A, 6 - LD (j_fire_ctr), A + LD (fire_frame_ctr), A XOR A - LD (j_var8_7c), A - LD (j_fire_frame), A - JP draw_game_scene + LD (fire_state), A + LD (fire_anim_frame), A + JP main_game_loop handle_fire: ; firectr-- - LD A, (j_fire_ctr) ;= 0x6 + LD A, (fire_frame_ctr) ;= 0x6 DEC A - LD (j_fire_ctr), A ;= 0x6 + LD (fire_frame_ctr), A ;= 0x6 OR A - JP Z, j_fire_complete + JP Z, clear_fire - LD A, (j_var8_7c) + LD A, (fire_state) OR A - JP Z, LAB_ram_1b71 + JP Z, fire_init_pos draw_fire: - LD A, (j_fire_frame) + LD A, (fire_anim_frame) OR A JP Z, draw_fire2 ; draw fire @@ -2765,7 +2769,7 @@ draw_fire: PUSH BC PUSH DE PUSH HL - LD HL, (j_fire_pos) ;= 0x4F + LD HL, (fire_screen_addr) ;= 0x4F LD BC, j_fire_c0 LD DE, j_fire_c1 LD A, 1 @@ -2798,38 +2802,38 @@ draw_fire: POP BC POP AF XOR A - LD (j_fire_frame), A - CALL SUB_ram_1bbf - LD HL, (j_fire_pos) ;= 0x4F + LD (fire_anim_frame), A + CALL check_fire_monster_collision + LD HL, (fire_screen_addr) ;= 0x4F LD A, 0x4 CP 0xfc - JP Z, j_fire_complete + JP Z, clear_fire INC H INC H - LD (j_fire_pos), HL ;= 0x4F + LD (fire_screen_addr), HL ;= 0x4F CALL player_on_floor draw_fire_end: - CALL SUB_ram_1bbf + CALL check_fire_monster_collision RET -LAB_ram_1b71: - LD HL, (j_player_addr) ;= 0xC0C8 +fire_init_pos: + LD HL, (player_screen_addr) ;= 0xC0C8 LD A, H ADD A, 0x4 LD H, A LD A, L ADD A, 0x7 LD L, A - LD (j_fire_pos), HL ;= 0x4F + LD (fire_screen_addr), HL ;= 0x4F LD A, 0x1 - LD (j_var8_7c), A + LD (fire_state), A JP draw_fire draw_fire2: PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (j_fire_pos) ;= 0x4F + LD HL, (fire_screen_addr) ;= 0x4F LD BC, j_fire2_c0 ;= 0xFF LD DE, j_fire2_c1 ;= 0xFF LD A, 1 @@ -2863,35 +2867,37 @@ draw_fire2: POP AF ; draw fire2 LD A, 1 - LD (j_fire_frame), A + LD (fire_anim_frame), A JP draw_fire_end -SUB_ram_1bbf: - LD HL, (j_fire_pos) ; = 0x4F + +check_fire_monster_collision: + LD HL, (fire_screen_addr) ; = 0x4F EX DE, HL - LD HL, (monstr_addr) ;= 0xE268 + LD HL, (monster_screen_addr) ;= 0xE268 LD A, H CP D - JP Z, LAB_ram_1bcc + JP Z, fire_check_monster_hit_y RET -LAB_ram_1bcc: + +fire_check_monster_hit_y: LD A, L ADD A, 0x7 CP E - JP Z, LAB_ram_1c11 + JP Z, fire_monster_hit RET -j_fire_complete: +clear_fire: PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (j_fire_pos) ; = 0x4F + LD HL, (fire_screen_addr) ; = 0x4F LD BC, j_player_era_c0 LD DE, j_player_era_c1 LD A, 0x1 -LAB_ram_1be3: +clear_fire_col_loop: PUSH AF LD A, 0x2 -LAB_ram_1be6: +clear_fire_row_loop: PUSH AF LD A, (BC) LD (HL), A @@ -2903,7 +2909,7 @@ LAB_ram_1be6: INC DE POP AF DEC A - JP NZ, LAB_ram_1be6 + JP NZ, clear_fire_row_loop LD A, H SUB 0x2 SUB 0x2 @@ -2911,21 +2917,22 @@ LAB_ram_1be6: INC L POP AF DEC A - JP NZ, LAB_ram_1be3 + JP NZ, clear_fire_col_loop POP HL POP DE POP BC POP AF XOR A - LD (is_fire), A - LD (j_var8_7c), A + LD (fire_active_flag), A + LD (fire_state), A LD A, 0x6 - LD (j_fire_ctr), A ; = 0x6 + LD (fire_frame_ctr), A ; = 0x6 RET -LAB_ram_1c11: + +fire_monster_hit: PUSH BC LD BC, 300 -LAB_ram_1c15: +fire_hit_sound_loop: LD A, 0xf OUT (DD67PC), A ; bell + tape PUSH HL @@ -2949,11 +2956,11 @@ j_mini_dly_snd: PUSH BC PUSH AF LD DE, 0x5 -LAB_ram_1c35: +fire_hit_sound_delay2: DEC DE LD A, D OR E - JP NZ, LAB_ram_1c35 + JP NZ, fire_hit_sound_delay2 POP AF POP BC POP DE @@ -2961,20 +2968,20 @@ LAB_ram_1c35: DEC BC LD A, C OR B - JP NZ, LAB_ram_1c15 + JP NZ, fire_hit_sound_loop POP BC PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (monstr_addr) ; = 0xE268 - LD BC, BYTE_ARRAY_ram_1dc6 - LD DE, BYTE_ARRAY_ram_1e26 + LD HL, (monster_screen_addr) ; = 0xE268 + LD BC, explosion_data_1 + LD DE, explosion_data_2 LD A, 0x10 -LAB_ram_1c55: +draw_explosion_loop_col: PUSH AF LD A, 0x6 -LAB_ram_1c58: +draw_explosion_loop_row: PUSH AF LD A, (BC) LD (HL), A @@ -2986,7 +2993,7 @@ LAB_ram_1c58: INC DE POP AF DEC A - JP NZ, LAB_ram_1c58 + JP NZ, draw_explosion_loop_row LD A, H SUB 0x6 SUB 0x6 @@ -2994,18 +3001,18 @@ LAB_ram_1c58: INC L POP AF DEC A - JP NZ, LAB_ram_1c55 + JP NZ, draw_explosion_loop_col POP HL POP DE POP BC POP AF - CALL j_fire_complete - CALL draw_levl_lines - CALL draw_levl_lines + CALL clear_fire + CALL draw_level_lines + CALL draw_level_lines CALL player_on_floor PUSH BC LD BC, 0x96 -LAB_ram_1c86: +explosion_sound_loop: LD A, 0xf OUT (DD67PC), A PUSH HL @@ -3013,11 +3020,11 @@ LAB_ram_1c86: PUSH BC PUSH AF LD DE, 0xa -LAB_ram_1c91: +explosion_sound_delay1: DEC DE LD A, D OR E - JP NZ, LAB_ram_1c91 + JP NZ, explosion_sound_delay1 POP AF POP BC POP DE @@ -3029,11 +3036,11 @@ LAB_ram_1c91: PUSH BC PUSH AF LD DE, 0xa -LAB_ram_1ca6: +explosion_sound_delay2: DEC DE LD A, D OR E - JP NZ, LAB_ram_1ca6 + JP NZ, explosion_sound_delay2 POP AF POP BC POP DE @@ -3041,20 +3048,20 @@ LAB_ram_1ca6: DEC BC LD A, C OR B - JP NZ, LAB_ram_1c86 + JP NZ, explosion_sound_loop POP BC PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (monstr_addr) ; = 0xE268 - LD BC, BYTE_ARRAY_ram_1e86 - LD DE, BYTE_ARRAY_ram_1ed6 + LD HL, (monster_screen_addr) ; = 0xE268 + LD BC, explosion_data3 + LD DE, explosion_data4 LD A, 0x10 -LAB_ram_1cc6: +draw_explosion2_loop_col: PUSH AF LD A, 0x5 -LAB_ram_1cc9: +draw_explosion2_loop_row: PUSH AF LD A, (BC) LD (HL), A @@ -3066,7 +3073,7 @@ LAB_ram_1cc9: INC DE POP AF DEC A - JP NZ, LAB_ram_1cc9 + JP NZ, draw_explosion2_loop_row LD A, H SUB 0x5 SUB 0x5 @@ -3074,33 +3081,35 @@ LAB_ram_1cc9: INC L POP AF DEC A - JP NZ, LAB_ram_1cc6 + JP NZ, draw_explosion2_loop_col POP HL POP DE POP BC POP AF - CALL draw_levl_lines - CALL draw_levl_lines + CALL draw_level_lines + CALL draw_level_lines CALL player_on_floor - CALL SUB_ram_1d02 - CALL SUB_ram_1d02 - CALL SUB_ram_1d02 - CALL SUB_ram_1d02 - CALL SUB_ram_1d3d - JP SUB_ram_18d7 -SUB_ram_1d02: + CALL erase_monster_and_move + CALL erase_monster_and_move + CALL erase_monster_and_move + CALL erase_monster_and_move + CALL draw_grave_and_move + JP monster_reset_state + +; -------------------------------------------------- +erase_monster_and_move: PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (monstr_addr) ; = 0xE268 + LD HL, (monster_screen_addr) ; = 0xE268 LD BC, j_player_era_c0 LD DE, j_player_era_c1 LD A, 0x10 -LAB_ram_1d11: +erase_monster_loop_col: PUSH AF LD A, 0x2 -LAB_ram_1d14: +erase_monster_loop_row: PUSH AF LD A, (BC) LD (HL), A @@ -3112,7 +3121,7 @@ LAB_ram_1d14: INC DE POP AF DEC A - JP NZ, LAB_ram_1d14 + JP NZ, erase_monster_loop_row LD A, H SUB 0x2 SUB 0x2 @@ -3120,37 +3129,39 @@ LAB_ram_1d14: INC L POP AF DEC A - JP NZ, LAB_ram_1d11 + JP NZ, erase_monster_loop_col POP HL POP DE POP BC POP AF - LD HL, (monstr_addr) ; = 0xE268 + LD HL, (monster_screen_addr) ; = 0xE268 LD A, H ADD A, 0x4 LD H, A - LD (monstr_addr), HL ; = 0xE268 + LD (monster_screen_addr), HL ; = 0xE268 RET -SUB_ram_1d3d: - LD HL, (j_last_live_addr) ; = 0xD2DC + +; -------------------------------------------------- +draw_grave_and_move: + LD HL, (last_life_screen_addr) ; = 0xD2DC LD A, H CP 0xfe RET Z INC H INC H - LD (j_last_live_addr), HL ; = 0xD2DC + LD (last_life_screen_addr), HL ; = 0xD2DC PUSH AF PUSH BC PUSH DE PUSH HL - LD HL, (j_last_live_addr) ; = 0xD2DC - LD BC, BYTE_ARRAY_ram_1f26 - LD DE, BYTE_ARRAY_ram_1f36 + LD HL, (last_life_screen_addr) ; = 0xD2DC + LD BC, grave_cross_data_1 + LD DE, grave_cross_data_2 LD A, 0x10 -LAB_ram_1d58: +draw_grave_loop_col: PUSH AF LD A, 0x1 -LAB_ram_1d5b: +draw_grave_loop_row: PUSH AF LD A, (BC) LD (HL), A @@ -3162,7 +3173,7 @@ LAB_ram_1d5b: INC DE POP AF DEC A - JP NZ, LAB_ram_1d5b + JP NZ, draw_grave_loop_row LD A, H SUB 0x1 SUB 0x1 @@ -3170,20 +3181,20 @@ LAB_ram_1d5b: INC L POP AF DEC A - JP NZ, LAB_ram_1d58 + JP NZ, draw_grave_loop_col POP HL POP DE POP BC POP AF RET -is_fire: +fire_active_flag: db 0 -j_fire_ctr: +fire_frame_ctr: db 0x6 -j_var8_7c: +fire_state: db 0x00 -j_fire_frame: +fire_anim_frame: db 0 ; Fire sign 1x16 pix @@ -3220,11 +3231,11 @@ j_player_firer_c1: db 0x80, 0x07, 0x80, 0x03, 0x00, 0x01, 0x00, 0x01 db 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03 -BYTE_ARRAY_ram_1dc6: +explosion_data_1: ds 32, 0 ds 32, 0 ds 32, 0 -BYTE_ARRAY_ram_1e26: +explosion_data_2: ; DS 32 db 0x00, 0x6C, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x6D db 0x0C, 0x00, 0x00, 0x00, 0x60, 0x01, 0x6C, 0x1B @@ -3241,7 +3252,7 @@ BYTE_ARRAY_ram_1e26: db 0x00, 0x0e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x00 -BYTE_ARRAY_ram_1e86: +explosion_data3: ; DS 32 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06 db 0x00, 0x00, 0x00, 0x43, 0xc0, 0x00, 0x00, 0x00 @@ -3255,21 +3266,21 @@ BYTE_ARRAY_ram_1e86: ds 16, 0 -BYTE_ARRAY_ram_1ed6: +explosion_data4: ds 16, 0 ds 32, 0 ds 32, 0 -BYTE_ARRAY_ram_1f26: +grave_cross_data_1: ;db[16] db 0x18, 0x3C, 0x42, 0x66, 0x5A, 0x3C, 0x18, 0x3C db 0x5A, 0xA5, 0x24, 0x24, 0x42, 0x42, 0x42, 0xc3 -BYTE_ARRAY_ram_1f36: +grave_cross_data_2: ;db[16] db 0x18, 0x3C, 0x42, 0x66, 0x5A, 0x3C, 0x18, 0x3C db 0x5A, 0xA5, 0x24, 0x24, 0x42, 0x42, 0x42, 0xc3 -j_fire_pos: +fire_screen_addr: dw 0xE44F ; -------------------------------------------------- @@ -3502,13 +3513,13 @@ j_mini_dly_snd5: OR B JP NZ, j_nxt_snd_per1 POP BC - LD A, (j_snd_21ee) ;= 0x3 + LD A, (happy_end_sound_counter) ;= 0x3 DEC A - LD (j_snd_21ee), A ;= 0x3 + LD (happy_end_sound_counter), A ;= 0x3 OR A JP NZ, draw_happy_end LD A, 3 - LD (j_snd_21ee), A ;= 0x3 + LD (happy_end_sound_counter), A ;= 0x3 RET ; -------------------------------------------------- @@ -3591,7 +3602,7 @@ j_wait_for_key: OUT (SYS_DD17PB), A ; vram @ 0xc000 RET -j_snd_21ee: +happy_end_sound_counter: db 3 j_msg_game_over1: diff --git a/JumpingJack/jack.com b/JumpingJack/jack.com new file mode 100644 index 0000000..e20d02d Binary files /dev/null and b/JumpingJack/jack.com differ diff --git a/JumpingJack/jack_data.inc b/JumpingJack/jack_data.inc index 8e0b0db..156afb9 100644 --- a/JumpingJack/jack_data.inc +++ b/JumpingJack/jack_data.inc @@ -24,13 +24,13 @@ j_msg_pres_key: db ASCII_TAB, "nAVMI KLAWI[U $" ; Нажми клавишу db " $" -game_line: +current_level_line: db 32 ; 80 - final -save_vmode: +save_video_mode: db 0x62 -BYTE_ram_0cbc: +color_mode_selector: db 0x00 j_arr_src_00: @@ -321,35 +321,35 @@ j_gravecross_c0: j_gravecross_c1: ds 16,0 -player_turn_frame: +player_anim_frame: db 0 -player_tf2: +player_anim_frame_offset: db 0x00 -lvl_mrg_ctr: +level_merge_counter: db 0x00 -j_monster_off: +monster_inactive_flag: db 0 -j_lifes_param: +lives_counter: db 1 -skip_frames: +frame_skip_counter: db 0x1 -random_w: +random_seed: dw 0x13C6 j_addr_75: dw 0xC0D8 -j_lvl_draw_addr: +level_draw_addr: dw 0xC0B8 -j_player_addr: +player_screen_addr: dw 0xC0C8 -j_chest_addr: +chest_screen_addr: dw 0xC400 first_lvl0_addr: