add debugging instructions
This commit is contained in:
parent
570e84bbcb
commit
730af486ab
29
README.md
29
README.md
|
@ -11,6 +11,7 @@ Falcon](https://www.romhacking.net/hacks/2701/) project.
|
|||
```
|
||||
|-- docs - supplemental documentation
|
||||
| |-- attachments - files used in other documentation
|
||||
| |-- debugging - files used to help debugging
|
||||
| |-- diagrams - mermaid diagram files documenting program flow
|
||||
| |-- lua_scripts - lua scripts for mesen and fceux
|
||||
| |-- sprite_library - extracted sprites for ease of viewing
|
||||
|
@ -142,6 +143,34 @@ interesting observations. You can search the code for these annotations.
|
|||
* `!(UNUSED)` - unused code or data that is never executed nor read
|
||||
* `!(OBS)` - observation or note
|
||||
|
||||
# Debugging
|
||||
|
||||
One of the biggest advantages of building this rom is that the build scripts
|
||||
also build the debugging symbols. Debugging symbols can be read by emulators
|
||||
and be included in the source view while debugging the game. For example,
|
||||
[Mesen](https://github.com/SourMesen/Mesen2) will automatically load the
|
||||
debugging symbols as long as the `contra.dbg` file exists in the same folder as
|
||||
`contra.nes`. Below is a screenshot of what debugging looks like with symbols.
|
||||
|
||||

|
||||
|
||||
You can see that the debugging symbols file points to the source code to include
|
||||
comments and labels. If you move or delete the source files, you will lose all
|
||||
the debugging information.
|
||||
|
||||
## FCEUX NameList
|
||||
|
||||
[FCEUX](https://fceux.com/web/home.html) doesn't support reading the debugger
|
||||
symbols, but you can load NameList (`.nl`) files. These files aren't as fully
|
||||
featured as the debugging symbols file, but does at least allow you to label
|
||||
jump/branch locations. It doesn't easily support comments on individual lines.
|
||||
|
||||
I've included the `.nl` files in `docs/debugging/fceux_namelists`. These files
|
||||
were generated from the `-Ln contra.labels.txt` command line parameter to
|
||||
`ld65`. Then the that file was converted to the `.nl` files with a custom
|
||||
script. I can't promise to keep these up to date as the source labels change,
|
||||
but I will try to.
|
||||
|
||||
# Project History
|
||||
I first became interested in this project after watching the
|
||||
[Summoning Salt](https://www.youtube.com/channel/UCtUbO6rBht0daVIOGML3c8w) video
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,992 @@
|
|||
$EB40#add_10_to_enemy_y_fract_vel#
|
||||
$EB88#add_4_to_enemy_y_pos#
|
||||
$EB27#add_a_to_enemy_x_pos#
|
||||
$EB42#add_a_to_enemy_y_fract_vel#
|
||||
$EB1F#add_a_to_enemy_y_pos#
|
||||
$EB8A#add_a_with_vert_scroll_to_enemy_y_pos#
|
||||
$EC35#add_a_y_to_enemy_pos_get_bg_collision#
|
||||
$E8A7#add_scroll_to_enemy_pos#
|
||||
$EB32#add_with_enemy_pos#
|
||||
$EC33#add_y_to_y_pos_get_bg_collision#
|
||||
$E78E#advance_enemy_routine#
|
||||
$C892#advance_graphic_read_addr#
|
||||
$F29E#aim_and_create_enemy_bullet#
|
||||
$F420#aim_var_1_for_quadrant_aim_dir_00#
|
||||
$F41A#aim_var_1_for_quadrant_aim_dir_01#
|
||||
$E740#boss_defeated_routine#
|
||||
$F2BE#bullet_generation#
|
||||
$EC27#check_enemy_collision_solid_bg#
|
||||
$EDF8#clear_enemy_custom_vars#
|
||||
$EDF1#clear_sprite_clear_enemy_pt_3#
|
||||
$EA23#clear_supertile_bg_collision#
|
||||
$F2BF#create_enemy_bullet_angle_a#
|
||||
$EAB7#create_enemy_for_explosion#
|
||||
$EAAB#create_explosion_89#
|
||||
$EAB3#create_two_explosion_89#
|
||||
$C315#decrement_delay_timer#
|
||||
$E9E5#destroy_all_enemies#
|
||||
$EB03#disable_bullet_enemy_collision#
|
||||
$EB07#disable_enemy_collision#
|
||||
$F4CD#dragon_arm_orb_seek_should_move#
|
||||
$EBB5#draw_enemy_supertile_a#
|
||||
$EBAA#draw_enemy_supertile_a_set_delay#
|
||||
$EB12#enable_bullet_enemy_collision#
|
||||
$EB16#enable_enemy_collision#
|
||||
$EB0E#enable_enemy_player_collision_check#
|
||||
$E7B0#enemy_routine_explosion#
|
||||
$E74B#enemy_routine_init_explosion#
|
||||
$E806#enemy_routine_remove_enemy#
|
||||
$EDD9#find_bullet_slot#
|
||||
$ED4E#find_far_segment_for_a#
|
||||
$ED4C#find_far_segment_for_x_pos#
|
||||
$EDCE#find_next_enemy_slot#
|
||||
$EDCA#find_next_enemy_slot_6_to_0#
|
||||
$EB52#generate_enemy_a#
|
||||
$EB57#generate_enemy_at_pos#
|
||||
$E0BB#get_bg_collision#
|
||||
$E087#get_bg_collision_far#
|
||||
$E0C3#get_cart_bg_collision#
|
||||
$F52C#get_quadrant_aim_dir_for_player#
|
||||
$F44D#get_rotate_00#
|
||||
$F451#get_rotate_01#
|
||||
$F466#get_rotate_dir#
|
||||
$C183#init_APU_channels#
|
||||
$C2FA#init_game_routine_reset_timer_low_byte#
|
||||
$EC31#init_vars_get_enemy_bg_collision#
|
||||
$EE47#initialize_enemy#
|
||||
$EAEA#level_boss_defeated#
|
||||
$C204#load_A_offset_graphic_data#
|
||||
$D064#load_alternate_graphics#
|
||||
$C193#load_bank_3_update_nametable_supertile#
|
||||
$C1A6#load_bank_3_update_nametable_tiles#
|
||||
$D105#load_palette_indexes#
|
||||
$D081#load_palettes_color_to_cpu#
|
||||
$E752#mortar_shot_routine_03#
|
||||
$C16B#play_sound#
|
||||
$ECF5#player_enemy_x_dist#
|
||||
$ECC7#red_turret_find_target_player#
|
||||
$EA16#remove_all_enemies#
|
||||
$E809#remove_enemy#
|
||||
$C328#reset_delay_timer#
|
||||
$E91E#reverse_enemy_x_direction#
|
||||
$E7A4#roller_routine_04#
|
||||
$C857#run_routine_from_tbl_below#
|
||||
$EB2F#set_08_09_to_enemy_pos#
|
||||
$CF27#set_a_as_current_level_routine#
|
||||
$E3CD#set_bullet_routine_to_2#
|
||||
$F313#set_bullet_velocities#
|
||||
$EAF6#set_delay_remove_enemy#
|
||||
$E974#set_destroyed_enemy_routine#
|
||||
$E78B#set_enemy_delay_adv_routine#
|
||||
$ED66#set_enemy_falling_arc_pos#
|
||||
$E81A#set_enemy_routine_to_a#
|
||||
$E8CD#set_enemy_velocity_to_0#
|
||||
$E8D9#set_enemy_x_velocity_to_0#
|
||||
$E851#set_enemy_y_vel_rem_off_screen#
|
||||
$E8D0#set_enemy_y_velocity_to_0#
|
||||
$EC6F#set_flying_capsule_x_vel#
|
||||
$EC4B#set_flying_capsule_y_vel#
|
||||
$CF1B#set_graphics_zero_mode#
|
||||
$E85B#set_outdoor_weapon_item_vel#
|
||||
$EA25#set_supertile_bg_collision#
|
||||
$EA26#set_supertile_bg_collisions#
|
||||
$D8D5#set_vel_for_speed_vars#
|
||||
$ED9D#set_weapon_item_indoor_velocity#
|
||||
$E7AA#shared_enemy_routine_03#
|
||||
$E814#shared_enemy_routine_clear_sprite#
|
||||
$EBCE#update_2_enemy_supertiles#
|
||||
$EC0A#update_enemy_nametable_tiles#
|
||||
$EC08#update_enemy_nametable_tiles_no_palette#
|
||||
$E837#update_enemy_pos#
|
||||
$E842#update_enemy_x_pos_rem_off_screen#
|
||||
$EBA4#update_nametable_tiles_set_delay#
|
||||
$E737#wall_core_routine_05#
|
||||
$C9A1#zero_out_nametables#
|
||||
$FFF6#nes_footer_maker_code#
|
||||
$FFF5#nes_footer_mirroring#
|
||||
$FFF4#nes_footer_size#
|
||||
$FFF2#nes_footer_chr_checksum#
|
||||
$FFF0#nes_footer_checksum#
|
||||
$FFE0#nes_footer_rom_name#
|
||||
$FFD8#konami_catalog_number#
|
||||
$FF11#unknown_01#
|
||||
$FCC0#dpcm_sample_01#
|
||||
$FC51#unknown_00#
|
||||
$FC00#dpcm_sample_00#
|
||||
$F612#bank_7_unused_space#
|
||||
$F5F2#quadrant_aim_dir_02#
|
||||
$F5D2#quadrant_aim_dir_01#
|
||||
$F5B2#quadrant_aim_dir_00#
|
||||
$F5A9#@set_and_exit#
|
||||
$F5AC#quadrant_aim_dir_lookup_tbl#
|
||||
$F580#@continue#
|
||||
$F56C#@shift_get_x_diff#
|
||||
$F557#@get_x_pos#
|
||||
$F54D#@get_y_pos#
|
||||
$F527#@exit#
|
||||
$F51B#@loop#
|
||||
$F525#@clear_zero_exit#
|
||||
$F51F#@continue#
|
||||
$F528#@set_negative_exit#
|
||||
$F508#@b3#
|
||||
$F4F6#@player_below_enemy#
|
||||
$F4E9#@check_player_vert_pos#
|
||||
$F4C8#@exit#
|
||||
$F4BC#@rotate_clockwise#
|
||||
$F4C6#@rotate_counterclockwise#
|
||||
$F4C0#@wrapped_rotation_check_dir#
|
||||
$F4C9#@no_dir_change#
|
||||
$F4A9#@determine_rotation#
|
||||
$F495#@continue2#
|
||||
$F497#@calc_reflected_dir#
|
||||
$F486#@check_player_pos#
|
||||
$F475#@continue#
|
||||
$F463#@get_quadrant_aim_dir#
|
||||
$F453#get_rotate_dir_for_index#
|
||||
$F43F#@set_var_1_continue#
|
||||
$F442#@continue#
|
||||
$F435#@rotate_1_counterclockwise#
|
||||
$F44B#@set_carry_exit#
|
||||
$F423#rotate_enemy_var_1#
|
||||
$F3F8#bullet_dir_half_a_add_to_vel#
|
||||
$F3D9#bullet_velocity_adjust_add_a#
|
||||
$F415#bullet_velocity_adjust_08#
|
||||
$F3FF#bullet_velocity_adjust_07#
|
||||
$F3F0#bullet_velocity_adjust_06#
|
||||
$F3E5#bullet_velocity_adjust_05#
|
||||
$F3D3#bullet_velocity_adjust_04#
|
||||
$F3CA#bullet_velocity_adjust_03#
|
||||
$F3E4#bullet_velocity_adjust_02#
|
||||
$F3C3#bullet_velocity_adjust_01#
|
||||
$F3BE#bullet_velocity_adjust_00#
|
||||
$F3AC#bullet_velocity_adjust_ptr_tbl#
|
||||
$F37E#@exit#
|
||||
$F36B#@set_x_vel#
|
||||
$F3A5#adjust_bullet_velocity#
|
||||
$F397#bullet_fract_vel_tbl#
|
||||
$F37F#bullet_fract_vel_dir_lookup_tbl#
|
||||
$F334#calc_bullet_velocities#
|
||||
$F303#@continue#
|
||||
$F32F#bullet_gen_exit#
|
||||
$F2E4#create_enemy_bullet#
|
||||
$F2D6#@set_dir_create_bullet#
|
||||
$F2D1#@continue#
|
||||
$F2D8#create_enemy_bullet_if_attack_enabled#
|
||||
$F2B7#@create_bullet_if_appropriate#
|
||||
$F55E#get_quadrant_aim_dir#
|
||||
$F2B4#@continue#
|
||||
$F299#@advance_enemy_routine#
|
||||
$F277#@generate_mortar_shot#
|
||||
$F24E#@mortar_shot_routine_01_exit#
|
||||
$F24F#@split_mortar#
|
||||
$F214#mortar_shot_adv_routine#
|
||||
$F217#mortar_shot_velocity_tbl#
|
||||
$F1F9#@set_mortar_velocities#
|
||||
$F1DF#@continue#
|
||||
$F26E#mortar_shot_routine_02#
|
||||
$F237#mortar_shot_routine_01#
|
||||
$F1D6#mortar_shot_routine_00#
|
||||
$F1B1#@add_scroll_exit#
|
||||
$F1B4#@disable_and_dec_enemy_routine#
|
||||
$F194#@continue#
|
||||
$F176#@activate_scuba_soldier#
|
||||
$F175#@exit#
|
||||
$F15E#@continue#
|
||||
$F183#scuba_soldier_routine_02#
|
||||
$F14C#scuba_soldier_routine_01#
|
||||
$F147#scuba_soldier_routine_00#
|
||||
$F12E#turret_man_adv_routine#
|
||||
$F131#turret_man_bullet_routine_01#
|
||||
$F11F#turret_man_bullet_routine_00#
|
||||
$F0EB#turret_man_exit#
|
||||
$F0EC#turret_man_routine_02#
|
||||
$F0DB#turret_man_routine_01#
|
||||
$F0C9#turret_man_routine_00#
|
||||
$F0BA#wall_plating_adv_enemy_routine#
|
||||
$F0B1#wall_plating_routine_03#
|
||||
$F0B0#wall_plating_routine_02#
|
||||
$F08A#wall_plating_routine_01#
|
||||
$F085#wall_plating_routine_00#
|
||||
$F065#@set_delay_set_routine_01#
|
||||
$F05B#wall_cannon_calc_delay_set_routine_01#
|
||||
$F05A#wall_cannon_exit_01#
|
||||
$F045#wall_cannon_bullet_type_and_angle#
|
||||
$F042#wall_cannon_bullet_x_offset#
|
||||
$F015#@create_bullet_loop#
|
||||
$F02D#@continue#
|
||||
$EFED#wall_cannon_set_delays#
|
||||
$EFFC#animate_wall_cannon#
|
||||
$EFEC#wall_cannon_exit#
|
||||
$EFCE#set_anim_delay_adv_enemy_routine#
|
||||
$F06D#wall_cannon_routine_04#
|
||||
$F048#wall_cannon_routine_03#
|
||||
$F007#wall_cannon_routine_02#
|
||||
$EFD4#wall_cannon_routine_01#
|
||||
$EFC7#wall_cannon_routine_00#
|
||||
$EF5B#enemy_prop_07#
|
||||
$EF37#enemy_prop_06#
|
||||
$EF23#enemy_prop_05#
|
||||
$EF07#enemy_prop_04#
|
||||
$EEEF#enemy_prop_02#
|
||||
$EEAB#enemy_prop_01#
|
||||
$EE9F#enemy_prop_00#
|
||||
$EE8D#enemy_prop_ptr_tbl#
|
||||
$EE63#@continue#
|
||||
$EE0A#clear_enemy_pt_2#
|
||||
$EE3A#clear_enemy_pt_4#
|
||||
$EE19#clear_enemy_pt_3#
|
||||
$EDFC#clear_enemy#
|
||||
$EDEA#@clear_next_enemy#
|
||||
$EDE8#bank_7_unused_label_07#
|
||||
$EDDB#@loop#
|
||||
$EDD8#find_enemy_routine_slot_exit#
|
||||
$EDD0#find_next_enemy_slot_x_to_0#
|
||||
$EDBC#weapon_item_indoor_vel_tbl#
|
||||
$ED9A#@remove_enemy#
|
||||
$ED5A#@use_code_0#
|
||||
$ED5D#@exit#
|
||||
$ED5F#far_segment_code_tbl#
|
||||
$ED50#@loop#
|
||||
$ED4B#@exit#
|
||||
$ED40#@set_closest#
|
||||
$ED36#@continue_p1#
|
||||
$ED2A#@continue#
|
||||
$ED1B#@continue_to_p2#
|
||||
$ED24#lda_closer_distance#
|
||||
$ED02#@continue_to_p2#
|
||||
$ECF2#@exit#
|
||||
$ECE4#@continue#
|
||||
$ED0E#player_enemy_y_dist#
|
||||
$ECA7#@loop#
|
||||
$ECB0#@loop2#
|
||||
$ECB9#@set_vars_exit#
|
||||
$EC91#bank_7_unused_label_06#
|
||||
$EC6D#bank_7_unused_label_05#
|
||||
$EC93#set_flying_capsule_path#
|
||||
$EC49#bank_7_unused_label_04#
|
||||
$EC46#@exit#
|
||||
$EC05#@set_slot_exit#
|
||||
$EBE4#@continue#
|
||||
$EC07#@exit#
|
||||
$EC23#nametable_update_exit#
|
||||
$EBB7#draw_enemy_supertile_10#
|
||||
$EBB4#@exit#
|
||||
$EBAD#update_nametable_set_anim_delay_exit#
|
||||
$EB83#@exit#
|
||||
$EB18#enemy_state_width_and_a#
|
||||
$EB1B#set_enemy_state_width_to_a#
|
||||
$EB09#enemy_state_width_or_a#
|
||||
$EAE7#@exit#
|
||||
$EAB9#create_explosion_a#
|
||||
$EABD#create_explosion_sequence#
|
||||
$EAA2#@check_next_loop#
|
||||
$EA88#@set_collision#
|
||||
$EA7E#@find_bit_offset#
|
||||
$EA7C#@continue#
|
||||
$EAA7#bg_collision_bit_mask_tbl#
|
||||
$EA6C#@set_quadrant_bg_collision#
|
||||
$EA64#@set_half_supertile_bg_collisions#
|
||||
$EA49#@loop#
|
||||
$EA1A#@loop#
|
||||
$EA10#@continue#
|
||||
$E9E9#@enemy_loop#
|
||||
$E9D9#enemy_destroyed_routine_06#
|
||||
$E9D4#enemy_destroyed_routine_05#
|
||||
$E9D1#enemy_destroyed_routine_04#
|
||||
$E9CD#enemy_destroyed_routine_03#
|
||||
$E9CA#enemy_destroyed_routine_02#
|
||||
$E9C1#enemy_destroyed_routine_01#
|
||||
$E9BF#enemy_destroyed_routine_00#
|
||||
$E9A2#@exit#
|
||||
$E998#@set_routine#
|
||||
$E9AD#enemy_destroyed_routine_ptr_tbl#
|
||||
$E981#@set_destroyed_routine#
|
||||
$E9A3#score_codes_tbl#
|
||||
$E96A#@continue#
|
||||
$E95E#@add_y_code_to_player_score#
|
||||
$E930#bank_7_unused_label_03#
|
||||
$E8C7#bank_7_unused_label_02#
|
||||
$E8B9#add_horizontal_scroll#
|
||||
$E886#@set_y_vel_enemy_frame#
|
||||
$E8B8#scroll_enemy_pos_exit#
|
||||
$E880#remove_enemy_far#
|
||||
$E883#set_weapon_item_y_vel_enemy_frame#
|
||||
$E86F#@set_weapon_item_velocity#
|
||||
$E8EC#update_enemy_y_pos#
|
||||
$E900#update_enemy_x_pos_with_scroll#
|
||||
$E849#apply_vel_exit#
|
||||
$E90A#update_enemy_x_pos#
|
||||
$E858#jmp_remove_enemy#
|
||||
$E8E2#update_enemy_y_pos_with_scroll#
|
||||
$E84A#update_enemy_x_pos_rem_if_off_screen#
|
||||
$E835#explosion_type_03#
|
||||
$E832#explosion_type_02#
|
||||
$E82E#explosion_type_01#
|
||||
$E82B#explosion_type_00#
|
||||
$E823#explosion_type_ptr_tbl#
|
||||
$E7F0#@continue2#
|
||||
$E7DF#@continue#
|
||||
$E805#enemy_routine_explosion_exit#
|
||||
$E7BA#@continue#
|
||||
$E7BC#show_explosion_a#
|
||||
$E797#bank_7_unused_label_01#
|
||||
$E80E#set_sprite_0#
|
||||
$E77C#@continue#
|
||||
$E76A#@skip_explosion_sound#
|
||||
$E75E#explosion_sound_hide_enemy#
|
||||
$E736#enemy_routine_do_nothing_00#
|
||||
$F119#turret_man_bullet_routine_ptr_tbl#
|
||||
$F0BD#turret_man_routine_ptr_tbl#
|
||||
$F13B#scuba_soldier_routine_ptr_tbl#
|
||||
$F1C4#mortar_shot_routine_ptr_tbl#
|
||||
$F077#wall_plating_routine_ptr_tbl#
|
||||
$E734#enemy_routine_do_nothing_ptr_tbl#
|
||||
$EFB7#wall_cannon_routine_ptr_tbl#
|
||||
$E726#enemy_routine_level_8#
|
||||
$E714#enemy_routine_level_7#
|
||||
$E70A#enemy_routine_level_6#
|
||||
$E6FC#enemy_routine_level_5#
|
||||
$E6F0#enemy_routine_level_3#
|
||||
$E6CE#enemy_routine_level_2_4#
|
||||
$E6C8#enemy_routine_level_1#
|
||||
$E698#level_enemy_routine_ptr_tbl#
|
||||
$E66B#exe_enemy_routine_subroutine#
|
||||
$E6A8#enemy_routine_ptr_tbl#
|
||||
$E67B#exec_level_enemy_routine#
|
||||
$E64D#@continue#
|
||||
$E644#@handle_outdoor#
|
||||
$E659#exe_enemy_routine#
|
||||
$E655#advance_enemy#
|
||||
$E626#exe_enemy_routine_loop#
|
||||
$E5E2#collision_box_codes_04#
|
||||
$E5A6#collision_box_codes_03#
|
||||
$E56A#collision_box_codes_02#
|
||||
$E52E#collision_box_codes_01#
|
||||
$E4F2#collision_box_codes_00#
|
||||
$E4C3#@exit#
|
||||
$E4B6#@replace_placeholder#
|
||||
$E4D8#collision_code_f_adj_tbl#
|
||||
$E4C4#collision_code_f_base_tbl#
|
||||
$E459#@continue#
|
||||
$E44B#@collision_code_f#
|
||||
$E4E8#collision_box_codes_tbl#
|
||||
$E40C#bullet_hit_sound_tbl#
|
||||
$E3FA#@play_collision_sound#
|
||||
$E3ED#@continue#
|
||||
$E40B#@exit#
|
||||
$E3BB#@continue_2#
|
||||
$E3C7#@set_routine_exit#
|
||||
$E3D8#bullet_collision_logic#
|
||||
$E39F#@continue#
|
||||
$E390#@bullet_enemy_collision#
|
||||
$E371#@bullet_delay#
|
||||
$E378#@test_collision#
|
||||
$E38A#@next_bullet#
|
||||
$E355#@loop#
|
||||
$E345#bullet_enemy_collision_test#
|
||||
$E339#@set_player_weapon#
|
||||
$E320#@continue#
|
||||
$E316#@set_invincibility_timer#
|
||||
$E32D#@compare_and_set_weapon#
|
||||
$E325#@set_rapid_flag#
|
||||
$E942#add_enemy_score_set_enemy_routine#
|
||||
$E2EB#@exit_01#
|
||||
$E340#remove_current_enemy#
|
||||
$E2D6#@invincible_collision#
|
||||
$E2EC#pick_up_weapon_item#
|
||||
$E2BC#@collide_with_enemy#
|
||||
$E2AE#@check_can_land_on#
|
||||
$E28E#@set_landing_pos#
|
||||
$E265#@land_on_enemy#
|
||||
$E262#@exit_00#
|
||||
$E29F#@inside_enemy_collision_box#
|
||||
$E411#set_enemy_collision_box#
|
||||
$E245#@check_if_enemy_collision#
|
||||
$E238#@set_collision_code_offset#
|
||||
$E217#@set_state_width#
|
||||
$E212#@set_collision_box_code#
|
||||
$E21C#@check_player_jumping#
|
||||
$E22A#@check_in_water_crouched#
|
||||
$E1F7#@handle_outdoor_level#
|
||||
$E25C#@next_player#
|
||||
$E1DB#@check_player_x_collision#
|
||||
$E1D9#check_players_collision#
|
||||
$E1C9#@supertile_index_loop#
|
||||
$E1B1#@repeat_level_data_byte#
|
||||
$E1BB#@set_nametable_supertile_indexes#
|
||||
$E1A3#@exit#
|
||||
$E19B#@vertical_level_section_end#
|
||||
$E18C#load_supertile_indexes_starting_at_y#
|
||||
$E1A6#load_rle_repeat_command#
|
||||
$E181#read_supertiles_screen_ptr_table#
|
||||
$E159#auto_scroll_timer_tbl#
|
||||
$E157#scroll_trigger_tbl#
|
||||
$E154#@exit_mark_scroll_enabled#
|
||||
$E156#@exit#
|
||||
$E132#collision_code_lookup_tbl#
|
||||
$E124#@no_shift#
|
||||
$E122#@shift_2_bits#
|
||||
$E120#@shift_4_bits#
|
||||
$E11E#@shift_6_bits#
|
||||
$E12A#@set_code_exit#
|
||||
$E130#level_screen_mem_offset_tbl_01#
|
||||
$E0E6#@bg_collision_data#
|
||||
$E0D3#@continue#
|
||||
$E0D1#@vert_overflow#
|
||||
$E0C5#bg_collision_logic#
|
||||
$E0BD#get_enemy_bg_collision#
|
||||
$E105#read_bg_collision_byte#
|
||||
$E0AD#@exit#
|
||||
$E08A#floor_get_next_row_bg_collision#
|
||||
$E077#vert_lvl_tile_collision_exit#
|
||||
$E05C#set_collision_tile_col_4#
|
||||
$E04B#set_collision_tile_col_3#
|
||||
$E065#set_collision_tile#
|
||||
$E038#set_collision_tile_col_2#
|
||||
$E020#set_collision_code_03#
|
||||
$E018#collision_code_2_check#
|
||||
$E022#collision_continue#
|
||||
$E010#collision_code_0_check#
|
||||
$E014#set_collision_code_0#
|
||||
$E074#tile_collision_exit#
|
||||
$DFD1#@write_supertile_palette_to_cpu#
|
||||
$DFE0#@merge_supertiles_across_nametable#
|
||||
$DFC0#@set_supertile_attribute_byte#
|
||||
$DF93#@exit#
|
||||
$DF69#@set_supertile_attribute_byte#
|
||||
$DEFE#@set_supertile_tiles#
|
||||
$DFFF#set_tile_collision#
|
||||
$DE66#load_level_supertile_data#
|
||||
$DE55#@odd_nametable_column#
|
||||
$DE04#@continue#
|
||||
$DE0D#@swap_base_nametable#
|
||||
$E16B#load_supertiles_screen_indexes#
|
||||
$DDAA#@load_screen_a_supertile_indexes#
|
||||
$DE14#level_2_4_boss_graphics_data#
|
||||
$DD93#@loop#
|
||||
$DDA3#@load_supertiles_screen_indexes_indoor#
|
||||
$DDBF#@exit#
|
||||
$DDAD#@write_column_tiles_exit#
|
||||
$DDC3#@indoor_screen_transition#
|
||||
$DDC0#@animate_indoor_fence#
|
||||
$DD4C#@continue_loop#
|
||||
$DD40#@dec_scroll_continue#
|
||||
$DD51#@write_attribute_continue#
|
||||
$DD11#@continue#
|
||||
$DCF0#@frame_scroll_loop#
|
||||
$DD50#@exit#
|
||||
$DCEA#@init_loop#
|
||||
$E15B#load_next_next_supertiles_screen_indexes#
|
||||
$DCC3#@inc_scroll_exit#
|
||||
$DCCA#@check_attr_update#
|
||||
$DC8B#@change_screen#
|
||||
$DC95#@inc_nametable_data#
|
||||
$DC78#@set_scroll_graphics_data#
|
||||
$DCC9#@exit#
|
||||
$DC6F#@include_tank_auto_scroll#
|
||||
$DC6B#@set_scroll_frame#
|
||||
$DC61#@check_scroll_timer_00#
|
||||
$DD5F#handle_indoor_scroll#
|
||||
$DC59#@handle_outdoor_level#
|
||||
$DCD8#handle_vertical_scroll#
|
||||
$DC52#@handle_horizontal_level#
|
||||
$DF96#write_row_attribute_to_cpu_memory#
|
||||
$DEBE#set_vert_lvl_super_tiles#
|
||||
$E162#load_next_supertiles_screen_indexes#
|
||||
$DC17#@set_a_exit#
|
||||
$DC19#@exit#
|
||||
$DF48#write_col_attribute_to_cpu_memory#
|
||||
$DE1A#load_column_of_tiles_to_cpu_buffer#
|
||||
$DC3E#@indoor_level#
|
||||
$DC1A#@vertical_level#
|
||||
$E169#load_current_supertiles_screen_indexes#
|
||||
$DBA7#config_horizontal_scrolling#
|
||||
$DBDB#continue_init_level#
|
||||
$DBC4#config_vertical_scrolling#
|
||||
$E0AF#find_floor_collision#
|
||||
$DB9B#@clear_carry_exit#
|
||||
$DB7A#@loop#
|
||||
$DB99#@set_carry_exit#
|
||||
$DB5F#@find_bg_collision#
|
||||
$DB5A#@player_bg_collision#
|
||||
$DB4C#@continue_3#
|
||||
$DB4A#@continue_2#
|
||||
$DB38#@continue#
|
||||
$E0B5#read_bg_collision_byte_unsafe#
|
||||
$DACE#can_player_drop_down_exit#
|
||||
$DAB0#@loop#
|
||||
$DACF#set_carry_exit#
|
||||
$DACD#collision_below_player#
|
||||
$DA9B#@continue#
|
||||
$DA8F#@exit#
|
||||
$E136#set_boss_auto_scroll#
|
||||
$DA58#@stop_player_x_velocity#
|
||||
$DA3A#@set_horizontal_level_frame_scroll#
|
||||
$DA60#horizontal_scroll_point_tbl#
|
||||
$DA63#set_vertical_level_frame_scroll#
|
||||
$DA5E#@exit#
|
||||
$DA06#@set_game_over#
|
||||
$D9D4#@continue#
|
||||
$D9C7#@exit#
|
||||
$D9BE#@indoor_continue#
|
||||
$D9C5#@exit_code_0#
|
||||
$D9B8#@indoor_floor#
|
||||
$D9BC#@indoor_boss_level#
|
||||
$D99B#init_PLAYER_WATER_STATE#
|
||||
$D9A0#jmp_walk_off_ledge#
|
||||
$D99A#@exit#
|
||||
$D996#@clear_edge_code_exit#
|
||||
$D93A#d_pad_player_aim_tbl#
|
||||
$D92A#@set_player_aim#
|
||||
$D91A#@continue#
|
||||
$D90B#@set_sprite_y#
|
||||
$D90F#landing_y_position_tbl#
|
||||
$D8E1#@negate_bullet_velocities#
|
||||
$D8C1#@continue#
|
||||
$D8CD#set_vel_for_speed_code_a#
|
||||
$D886#@continue#
|
||||
$D87A#@check_aim_dir#
|
||||
$D866#indoor_transition_exit#
|
||||
$D83E#@exit#
|
||||
$D82E#@continue#
|
||||
$D829#@test_left_d_pad#
|
||||
$D82F#x_velocity_exit#
|
||||
$D81A#@continue#
|
||||
$D812#@set_x_velocity#
|
||||
$D9CB#player_jumping_set_y_pos#
|
||||
$D800#@set_y_pos#
|
||||
$D9EC#apply_gravity#
|
||||
$D803#@set_jump_status_from_input#
|
||||
$D7F4#@apply_gravity#
|
||||
$D7CD#@check_collision#
|
||||
$D7DB#@check_collision_above#
|
||||
$D814#set_x_velocity_from_a_code#
|
||||
$D820#get_x_velocity_d_pad_code#
|
||||
$D7AA#@set_x_velocity#
|
||||
$D867#player_land_on_ground#
|
||||
$D791#@off_ledge_start#
|
||||
$D77E#@exit#
|
||||
$D772#@exit#
|
||||
$D770#@continue#
|
||||
$D762#set_player_x_vel_to_a#
|
||||
$D89B#set_player_advancing_vel#
|
||||
$D750#@check_next_player#
|
||||
$D739#@check_player_x_advancing#
|
||||
$D756#set_player_standing_sprite_sequence#
|
||||
$D737#@check_players_advancing#
|
||||
$D723#@indoor_screen_cleared#
|
||||
$D70B#set_sprite_sequence_to_a#
|
||||
$D70E#d_pad_up_pressed#
|
||||
$D70A#set_sprite_sequence_to_y#
|
||||
$D760#set_player_negative_x_velocity#
|
||||
$D75C#set_player_positive_x_velocity#
|
||||
$D6F2#@set_y_velocity#
|
||||
$D6DD#@continue#
|
||||
$D6D0#@continue#
|
||||
$D6BA#walk_off_ledge#
|
||||
$D6C4#set_edge_fall_code#
|
||||
$D6D2#player_sprite_animation_exit#
|
||||
$DA91#can_player_drop_down#
|
||||
$D6F8#handle_d_pad#
|
||||
$D83F#indoor_transition_set_pos#
|
||||
$D69B#@handle_player_input#
|
||||
$D7AF#handle_jump#
|
||||
$D694#@indoor_transition_anim_check#
|
||||
$D77F#set_x_velocity_for_edge_fall_code#
|
||||
$D68D#@player_jump_check#
|
||||
$D830#update_indoor_electrocution#
|
||||
$D686#@player_edge_fall_check#
|
||||
$D6D3#set_jump_status_and_y_velocity#
|
||||
$D858#indoor_transition_end#
|
||||
$D67F#@player_electrocution_check#
|
||||
$D655#@apply_vel_to_player_x_pos#
|
||||
$DA0B#set_frame_scroll_if_appropriate#
|
||||
$D637#@lvl_boss_max_x_scroll_tbl#
|
||||
$D665#level_right_edge_x_pos_tbl#
|
||||
$DB28#check_player_solid_bg_collision#
|
||||
$D631#@set_scroll_apply_x_vel#
|
||||
$D63F#@player_negative_x_vel#
|
||||
$D664#@exit#
|
||||
$D66B#handle_player_state#
|
||||
$D5F8#@continue#
|
||||
$D5FB#calc_player_x_vel#
|
||||
$D9C8#apply_gravity_set_y_pos#
|
||||
$D8EF#set_player_landing_y_offset#
|
||||
$D5DB#@set_animation_timer#
|
||||
$D5DF#@set_pos_and_sprite#
|
||||
$D5C1#@continue#
|
||||
$D5EB#player_died_x_velocity_tbl#
|
||||
$D9FA#init_player_dec_num_lives#
|
||||
$D5E5#@set_player_sprite_exit#
|
||||
$D5A9#@animation_timer_elapsed#
|
||||
$D5E8#player_sprite_sequence_tbl#
|
||||
$D773#sty_level_screen_type#
|
||||
$D668#level_left_edge_x_pos_tbl#
|
||||
$D58F#@inc_y_pos_exit#
|
||||
$D592#@exit#
|
||||
$D577#auto_scroll_player#
|
||||
$D5EE#handle_player_state_calc_x_vel#
|
||||
$D97A#check_player_ledge#
|
||||
$D912#set_player_aim_for_input#
|
||||
$D888#init_player_data#
|
||||
$D54A#kill_player#
|
||||
$D549#@exit#
|
||||
$D56B#player_state_routine_01_logic#
|
||||
$DAA1#check_collision_below#
|
||||
$D523#@exit#
|
||||
$D9A3#get_player_bg_collision_code#
|
||||
$D500#@set_x_pos#
|
||||
$D4EB#@find_landing#
|
||||
$D514#@check_if_floor_exit#
|
||||
$D505#@set_frame_invincible_timer_exit#
|
||||
$D52C#horizontal_spawn_position#
|
||||
$D524#vertical_spawn_position#
|
||||
$DAD5#init_player_attributes#
|
||||
$D593#player_state_routine_02#
|
||||
$D534#player_state_routine_01#
|
||||
$D4C3#player_state_routine_00#
|
||||
$D4B3#player_state_routine#
|
||||
$D4AC#@continue#
|
||||
$D4BB#level_spawn_position_index#
|
||||
$D49A#@exit#
|
||||
$D49B#weapon_strength#
|
||||
$D488#set_player_weapon_strength#
|
||||
$D482#@continue#
|
||||
$D476#decrement_invincibility_effect#
|
||||
$D46C#set_enemies_to_attack#
|
||||
$D4A0#run_player_state_routine#
|
||||
$D45F#@exit#
|
||||
$D43C#@exit#
|
||||
$D454#find_scrolled_player#
|
||||
$D43D#@vertical_scroll_player#
|
||||
$D453#@exit2#
|
||||
$DAD1#init_player_and_weapon#
|
||||
$D421#@revive_player#
|
||||
$D415#@subtract_life#
|
||||
$D3FB#@check_transfer_life#
|
||||
$D3F2#@player_loop#
|
||||
$D42B#@exit#
|
||||
$D42C#scroll_player#
|
||||
$D460#handle_invincibility_and_weapon_strength#
|
||||
$D3E6#player_state_routine_03#
|
||||
$D3CC#run_player_invincibility_and_weapon_strength#
|
||||
$D3C6#@p2_game_over_status#
|
||||
$D38D#@player_bullet_loop#
|
||||
$D388#@run_player_bullet_routines#
|
||||
$D37C#@continue#
|
||||
$D3B4#set_frame_scroll_weapon_strength#
|
||||
$D227#game_palettes#
|
||||
$D19A#ending_palette_2_index#
|
||||
$D18A#indoor_boss_palette_2_index#
|
||||
$D192#falcon_weapon_flash_tbl#
|
||||
$D143#set_a_to_palette_2#
|
||||
$D196#level_palette_2_index#
|
||||
$D17C#set_ending_palette_animation#
|
||||
$D145#load_10_sprite_palettes#
|
||||
$D140#load_palettes_color_to_cpu_2_index#
|
||||
$D16C#set_indoor_boss_palette_2_animation#
|
||||
$D126#@continue#
|
||||
$D181#lvl_palette_animation_count#
|
||||
$D14A#falcon_weapon_flash#
|
||||
$D16B#palette_mod_exit#
|
||||
$D0FD#palette_shift_amount_tbl#
|
||||
$D0F9#@write_black_to_cpu_mem#
|
||||
$D0DC#@continue#
|
||||
$D0CF#@exit#
|
||||
$D0B8#write_palette_color_a_to_cpu_mem#
|
||||
$D0B6#read_palette_color#
|
||||
$D0D0#shift_bg_palette_color#
|
||||
$D0B2#read_palette_loop#
|
||||
$D225#game_palette_ptr_tbl#
|
||||
$D08F#load_palette_colors_to_cpu#
|
||||
$D19E#lvl_alt_collision_and_palette_tbl#
|
||||
$D074#@loop#
|
||||
$D38B#draw_player_bullet_sprites#
|
||||
$D053#@game_paused#
|
||||
$D063#pause_exit#
|
||||
$D00E#@next_player_adv_lvl_index#
|
||||
$D003#@player_loop#
|
||||
$CFFF#@continue#
|
||||
$D01E#level_routine_exit#
|
||||
$CFC7#@set_cursor_sprite_and_scores#
|
||||
$CFDC#reset_game_routine#
|
||||
$CFBB#@check_select_button#
|
||||
$CF95#@no_continues_remaining#
|
||||
$CF9A#@set_demo_end_exit#
|
||||
$CF65#level_routine_05_exit#
|
||||
$CF60#load_level_intro#
|
||||
$CF6E#show_game_over_screen#
|
||||
$CF12#set_to_level_routine_05#
|
||||
$CEF7#run_level_enemy_logic#
|
||||
$CF0A#init_game_over#
|
||||
$D371#set_frame_scroll_draw_player_bullets#
|
||||
$CEEE#check_game_over_run_enemy_logic#
|
||||
$CF25#set_to_level_routine_08#
|
||||
$CF09#level_routine_04_exit#
|
||||
$D038#check_for_pause#
|
||||
$CEC4#level_routine_03_exit#
|
||||
$CEBE#@continue#
|
||||
$CEC8#level_vert_scroll_and_song#
|
||||
$CEC5#draw_the_scores_1#
|
||||
$CE95#@continue#
|
||||
$CE97#skip_level_routine_01#
|
||||
$CE7B#inc_level_routine_index#
|
||||
$DB9D#init_ppu_write_screen_supertiles#
|
||||
$CE6A#load_level_header#
|
||||
$D02E#level_routine_0a#
|
||||
$D01F#level_routine_09#
|
||||
$CFEA#level_routine_08#
|
||||
$CFE1#level_routine_07#
|
||||
$CF9D#level_routine_06#
|
||||
$CF2E#level_routine_05#
|
||||
$CEE3#level_routine_04#
|
||||
$CED8#level_routine_03#
|
||||
$CE9B#level_routine_02#
|
||||
$CE7E#level_routine_01#
|
||||
$CE4B#level_routine_00#
|
||||
$CE35#level_routine_ptr_tbl#
|
||||
$CE32#run_level_routine#
|
||||
$CDBF#pattern_tile_bg_00#
|
||||
$CDFF#pattern_tile_fence_tbl#
|
||||
$CDA3#@write_to_graphics_buffer#
|
||||
$CDBD#pattern_tile_bg_tbl#
|
||||
$CD6F#@continue#
|
||||
$CD64#@draw_random_fence#
|
||||
$CDBC#@exit#
|
||||
$CD54#animate_indoor_fence#
|
||||
$CD08#@loop#
|
||||
$CD27#alt_graphics_loading_complete#
|
||||
$CD2C#alt_graphic_data_ptr_tbl#
|
||||
$CCE4#set_alt_graphics_cpu_buffer#
|
||||
$CC9D#@loop#
|
||||
$CCB7#graphics_loading_exit#
|
||||
$CC70#@write_loop#
|
||||
$CC60#@set_PPU_write_address#
|
||||
$CC47#@write_to_ppu#
|
||||
$CC2B#@write_byte_to_ppu#
|
||||
$CC29#@write_ff_to_ppu#
|
||||
$CC11#@loop#
|
||||
$CC2E#@flush_graphics_buffer#
|
||||
$CC1C#@reset_graphics_buffer#
|
||||
$CBE5#@continue#
|
||||
$CBD1#@read_cpu_mem_to_ppu#
|
||||
$CC3F#@flush_cpu_graphics_buffer#
|
||||
$CBC5#vram_address_increment#
|
||||
$CBBF#write_to_700_offset#
|
||||
$CB9C#@dec_blank_delay#
|
||||
$CB9E#@next_char#
|
||||
$CBA5#@handle_fd#
|
||||
$CBA1#@write_ff_to_cpu_memory#
|
||||
$CBC3#set_x_to_offset_exit#
|
||||
$CB7D#@write_char_to_cpu_mem#
|
||||
$CBBD#write_a_to_cpu_graphics_buffer#
|
||||
$CB4B#blank_nametable_2#
|
||||
$CB36#graphic_data_00 blank_nametables#
|
||||
$CB2B#@draw_final_0_exit#
|
||||
$CB2F#@draw_zero_score#
|
||||
$CB1B#@draw_score_end_zeros#
|
||||
$CB02#@draw_score_digit#
|
||||
$CB2E#@exit#
|
||||
$CAF8#@draw_score#
|
||||
$CAC1#draw_the_scores#
|
||||
$CAAD#draw_stage_and_level_name#
|
||||
$CAA5#@exit#
|
||||
$CA9A#@write_num_lives#
|
||||
$CA8E#@convert_digits#
|
||||
$CA7E#@draw_num_lives#
|
||||
$CA7C#@continue#
|
||||
$CAA6#draw_game_over_tex#
|
||||
$CA61#draw_player_num_lives#
|
||||
$CA2C#write_a_to_ppu_y_times#
|
||||
$CA15#advance_ppu_write_addr#
|
||||
$CA10#advance_graphic_read_addr_n_bytes#
|
||||
$CA36#horizontal_flip_graphic_byte#
|
||||
$CA06#write_repetition_sequence_byte#
|
||||
$C9FD#write_next_n_sequence_bytes#
|
||||
$CA1D#write_graphic_byte_a_times#
|
||||
$CA51#change_ppu_write_address#
|
||||
$CA5B#end_graphic_code#
|
||||
$C9E8#write_graphic_data_sequences_to_ppu#
|
||||
$C9E3#init_graphic_data_index#
|
||||
$C9CC#begin_ppu_graphics_block_write#
|
||||
$C950#graphic_data_ptr_tbl#
|
||||
$C94B#ending_graphic_data#
|
||||
$C948#intro_graphic_data_01#
|
||||
$C946#intro_graphic_data_00#
|
||||
$C940#level_4_boss_graphic_data#
|
||||
$C93B#level_2_boss_graphic_data#
|
||||
$C936#level_8_graphic_data#
|
||||
$C92E#level_7_graphic_data#
|
||||
$C926#level_6_graphic_data#
|
||||
$C91E#level_5_graphic_data#
|
||||
$C90D#level_4_graphic_data#
|
||||
$C916#level_3_graphic_data#
|
||||
$C905#level_2_graphic_data#
|
||||
$C8FD#level_1_graphic_data#
|
||||
$C9A3#write_graphic_data_to_ppu#
|
||||
$C8D6#@loop#
|
||||
$C8E3#level_graphic_data_tbl#
|
||||
$C8C3#exit_load_graphics_group#
|
||||
$C8A7#@handle_overflow_exit#
|
||||
$C89C#@handle_overflow#
|
||||
$C89B#@exit#
|
||||
$C88A#continue_shift_score#
|
||||
$C87E#shift_and_check_digit_carry#
|
||||
$C874#calculate_score_digit#
|
||||
$C870#bank_7_unused_label_00#
|
||||
$C7FD#@continue#
|
||||
$C7D3#@nametable#
|
||||
$C7D1#@round_up#
|
||||
$C7B5#level_screen_mem_offset_tbl_00#
|
||||
$C7B3#attribute_base_high_byte#
|
||||
$C7B1#nametable_base_high_byte#
|
||||
$C77F#write_overwrite_tile_to_cpu_buffer#
|
||||
$C76F#prep_overwrite_nametable_tiles#
|
||||
$C7B7#palette_mask_tbl#
|
||||
$C739#@shift_4#
|
||||
$C73B#@shift_2#
|
||||
$C73D#@set_supertile_palette#
|
||||
$C75C#@update_nametable_tiles#
|
||||
$C721#@continue#
|
||||
$C79F#level_tile_animation_ptr_tbl#
|
||||
$C6F7#update_nametable_tiles_exit#
|
||||
$C6CA#@write_update_supertile#
|
||||
$C6B8#@mv_down_row#
|
||||
$C697#@write_palette_data#
|
||||
$C6CD#update_palette_cfg_tbl#
|
||||
$C631#@update_palette_02#
|
||||
$C67B#@update_palette_continue#
|
||||
$C601#@update_palette_01#
|
||||
$C5AF#@write_graphic_group_bytes#
|
||||
$C5A3#@write_graphic_group#
|
||||
$C83C#set_graphics_buffer_header#
|
||||
$C5D0#update_supertile_palette#
|
||||
$C575#write_update_supertile_to_cpu#
|
||||
$C6D3#nametable_update_data_ptr_tbl#
|
||||
$C54B#@continue#
|
||||
$C7BB#set_ppu_addresses_in_mem#
|
||||
$C529#@set_high_score#
|
||||
$C535#score_exit#
|
||||
$C50C#@set_num_lives#
|
||||
$C4FD#@inc_num_lives#
|
||||
$C4F3#@continue_inc_num_lives#
|
||||
$C4DC#@extra_life_logic#
|
||||
$C517#@set_if_new_high_score#
|
||||
$C4E5#@set_extra_life_inc_num_lives#
|
||||
$C4CD#@set_if_extra_life#
|
||||
$C4C1#@continue#
|
||||
$C4A8#add_player_score#
|
||||
$C4A0#add_player_low_score#
|
||||
$C49F#add_player_score_exit#
|
||||
$C494#clear_memory_block#
|
||||
$C483#@loop#
|
||||
$C481#clear_memory_starting_a_x#
|
||||
$C469#init_player_num_lives#
|
||||
$C461#init_player_lives#
|
||||
$C47D#p2_game_over_status_tbl#
|
||||
$C47B#player_mode_1d_table#
|
||||
$C44B#clear_score_byte#
|
||||
$C447#reset_players_score#
|
||||
$C431#@continue#
|
||||
$C47F#clear_memory_3#
|
||||
$C3DB#player_mode_change#
|
||||
$C3E7#stop_demo_load_player_select_UI#
|
||||
$C3E6#timer_exit#
|
||||
$C3A2#read_controller_button#
|
||||
$C386#set_player_input#
|
||||
$C384#write_input#
|
||||
$C375#@continue#
|
||||
$C36B#ensure_input_valid#
|
||||
$C397#read_controller_state#
|
||||
$C345#konami_input_index_correct#
|
||||
$C351#konami_code_lookup_table#
|
||||
$C350#konami_code_exit#
|
||||
$C325#@exit_z_flag_clear#
|
||||
$C327#@exit#
|
||||
$C307#init_game_routine_flags#
|
||||
$C43E#init_score_player_lives#
|
||||
$C2DC#@intro_timer_elapsed#
|
||||
$C40F#dec_intro_theme_delay#
|
||||
$C2FC#set_game_routine_init_flag#
|
||||
$C2D3#@continue#
|
||||
$C30E#set_game_routine_index_to_a#
|
||||
$C300#game_routine_02_exit#
|
||||
$CE27#run_level_routine_for_demo#
|
||||
$C41C#set_next_demo_level#
|
||||
$C2BA#@continue#
|
||||
$C305#increment_game_routine#
|
||||
$C3F9#load_intro_palette2_play_intro_sound#
|
||||
$C2B0#game_routine_01_exit#
|
||||
$C282#game_routine_01_scroll_complete#
|
||||
$C331#konami_input_check#
|
||||
$C272#player_select_cursor_pos#
|
||||
$C301#inc_routine_index_set_timer#
|
||||
$C8A8#load_intro_graphics#
|
||||
$CE30#game_routine_05#
|
||||
$C2F4#game_routine_04#
|
||||
$C2C7#game_routine_03#
|
||||
$C2B1#game_routine_02#
|
||||
$C274#game_routine_01#
|
||||
$C25B#game_routine_00#
|
||||
$C24D#game_routine_pointer_table#
|
||||
$C3BC#dec_theme_delay_check_user_input#
|
||||
$C248#run_game_routine#
|
||||
$C233#load_bank_3_run_end_lvl_sequence_routine#
|
||||
$C22B#simulate_input_for_demo#
|
||||
$C223#game_routine_06#
|
||||
$CB60#write_text_palette_to_mem#
|
||||
$C217#load_bank_6_write_text_palette_to_mem#
|
||||
$C20F#load_bank_2_set_players_paused_sprite_attr#
|
||||
$C207#load_bank_2_set_player_sprite#
|
||||
$C8C6#load_level_graphic_data#
|
||||
$C8C4#load_current_level_graphic_data#
|
||||
$C201#load_level_graphics#
|
||||
$CCB8#alternate_tile_loading#
|
||||
$C1F9#load_bank_2_alternate_tile_loading#
|
||||
$DBE6#init_lvl_nametable_animation#
|
||||
$C1F1#load_bank_3_init_lvl_nametable_animation#
|
||||
$DC4B#handle_scroll#
|
||||
$C1E9#load_bank_3_handle_scroll#
|
||||
$C1E1#load_bank_2_exe_soldier_generation#
|
||||
$E689#load_level_enemies_to_mem#
|
||||
$C1D9#load_bank_0_load_level_enemies_to_mem#
|
||||
$C1D1#load_bank_2_load_screen_enemy_data#
|
||||
$E61E#exe_all_enemy_routine#
|
||||
$C1C9#load_bank_0_exe_all_enemy_routine#
|
||||
$C1C1#load_bank_6_check_player_fire#
|
||||
$C1B9#load_bank_6_run_player_bullet_routines#
|
||||
$C6F8#update_nametable_tiles#
|
||||
$C536#update_nametable_supertile#
|
||||
$C15E#local_previous_1_bank#
|
||||
$C14C#load_bank_1#
|
||||
$C146#load_previous_bank#
|
||||
$FFD0#prg_rom_banks#
|
||||
$C12C#@loop#
|
||||
$C104#set_ppu_scroll#
|
||||
$C13F#set_rom_bank_to_y#
|
||||
$C0D1#@continue#
|
||||
$C0BE#@handle_sound#
|
||||
$C0B5#irq#
|
||||
$C0AF#remove_registers_from_stack_and_rti#
|
||||
$CBB9#write_0_to_cpu_graphics_buffer#
|
||||
$C23B#exe_game_routine#
|
||||
$C35B#load_controller_state#
|
||||
$C139#load_bank_number#
|
||||
$C0F7#set_ppu_addr_to_nametables#
|
||||
$C08A#@continue#
|
||||
$CBC9#write_cpu_graphics_buffer_to_ppu#
|
||||
$CC81#write_palette_colors_to_ppu#
|
||||
$C0B6#handle_sounds_set_ppu_scroll_rti#
|
||||
$C060#nmi_start#
|
||||
$C057#forever_loop#
|
||||
$C0E7#configure_PPU#
|
||||
$C0DC#init_APU#
|
||||
$C038#@loop#
|
||||
$C049#init_APU_and_PPU#
|
||||
$C036#init_07f0_through_high_score#
|
||||
$C02B#@loop#
|
||||
$C126#clear_memory#
|
||||
$C117#clear_ppu#
|
||||
$C008#vertical_blank_entry#
|
||||
$C003#wait_til_vblank#
|
||||
$C001#reset_vector#
|
|
@ -4617,7 +4617,7 @@ handle_jump:
|
|||
@set_jump_status_from_input:
|
||||
jsr get_x_velocity_d_pad_code ; see if left or right d-pad button is pressed
|
||||
beq @set_x_velocity ; branch if neither were pressed
|
||||
sta $08 ; store #$20 for left d-pad, #$40 for right d-pad in $08
|
||||
sta $08 ; store #$20 for right d-pad, #$40 for left d-pad in $08
|
||||
lda PLAYER_JUMP_STATUS,x ; low nibble 1 = jumping, 0 not jumping; high nibble = facing direction
|
||||
and #$9f ; keep bits x..x xxxx
|
||||
ora $08 ; update EDGE_FALL_CODE based on d-pad input
|
||||
|
|
Loading…
Reference in New Issue