Update_Blinking_Counter: LD A, $mem_blinking_animation_counter DEC A CP $ff RET Z LD $mem_blinking_animation_counter, A RET Update_Animation_Steps: LD A, $mem_map_loading_flags BIT 3, A JR Z, =.update_mode LD A, $mem_map_loading_flags SET 0, A LD $mem_map_loading_flags, A LD A, $mem_moving_animation_step INC A AND $0f LD $mem_moving_animation_step, A CP $00 JR NZ, =.end LD A, $00 LD $mem_bunny_animation, A LD A, $mem_map_loading_flags RES 3, A SET 1, A LD $mem_map_loading_flags, A .update_mode: ; We need to make sure that the mode doesn't change to a mode with objects update while a dialogue box refresh is currently being done LD A, $mem_current_mode BIT 7, A JR Z, =.set_current_mode LD A, $mem_display_flag AND 0b00010100 CP $00 JR NZ, =.end .set_current_mode: LD A, $mem_requested_mode LD $mem_current_mode, A CALL =Update_VBlank_Handler .end: LD A, $mem_moving_animation_step CP $00 RET NZ LD A, $mem_bunny_health CP $00 RET NZ .Dead_mode: LD A, $mem_current_mode CP $enum_dead_mode RET Z LD A, $00 LD $mem_bunny_direction, A LD A, $02 LD $mem_bunny_animation, A .LOAD_MUSIC =_music_GameOver CALL =Start_Music LD A, $enum_dead_mode LD $mem_requested_mode, A LD $mem_current_mode, A CALL =Update_VBlank_Handler LD HL, $dialogue_first_line LD BC, $12 CALL =bzero LD HL, $dialogue_third_line LD BC, $12 CALL =bzero LD HL, $dialogue_first_line .LOAD_BANK_OF =Game_Over_1_Txt LD BC, ptr(=Game_Over_1_Txt) CALL =Print_str LD HL, $dialogue_third_line .LOAD_BANK_OF =Game_Over_2_Txt LD BC, ptr(=Game_Over_2_Txt) CALL =Print_str LD A, 0b00100111 LD $mem_display_flag, A RET STAT_Entrypoint: PUSH AF PUSH DE .SET_WINDOW_LCDC_E LD A, $reg_lyc CP $0a JR Z, =.End_Top_Bar CP $67 JR Z, =.Start_dialogue .Thin_font: LD A, $palette_thin_font LD $reg_bg_palette, A JR =.skip_dialogue .Start_dialogue: LD A, $mem_display_flag BIT 0, A JR Z, =.skip_dialogue .ENABLE_DIALOGUE LD A, $mem_display_flag BIT 1, A JR Z, =.Thin_font LD A, $palette_bold_font LD $reg_bg_palette, A LD A, $77 LD $reg_lyc, A .RESET_INTERRUPTS POP DE POP AF RETI .skip_dialogue: .DISABLE_LYC_INTERRUPT POP DE POP AF RETI .End_Top_Bar: .DISABLE_DIALOGUE LD A, $67 LD $reg_lyc, A .RESET_INTERRUPTS POP DE POP AF RETI Dungeon_VBLANK_Entrypoint: .SET_WINDOW_LCDC_E LD A, $mem_dungeon_flags BIT 3, A JR NZ, =.top_bar.enable .DISABLE_TOP_BAR LD A, $67 LD $reg_lyc, A JR =.top_bar.end .top_bar.enable: .ENABLE_TOP_BAR LD A, $0a LD $reg_lyc, A .top_bar.end: CALL $OAM_DMA_Transfer_routine LD A, $mem_current_mode BIT 7, A JR NZ, =Skip_VBlank_Dungeon_Update LD HL, $9d60 LD A, $mem_bunny_health CALL =Print_8bit LD HL, $9d64 LD A, $mem_bunny_mana CALL =Print_8bit CALL =Display_Prepared_Blocks CALL =Display_Object Skip_VBlank_Dungeon_Update: ; LYC .ENABLE_LYC_INTERRUPT .RESET_INTERRUPTS EI CALL =Pad_Button_Check CALL =Load_Additional_Block LD A, $mem_current_mode CP $enum_dungeon_mode JR NZ, =Skip_Dungeon_Update CALL =Entities_Actions CALL =Object_Interactions_Check CALL =Respawn_Entities CALL =Prepare_Scrolling_Map Skip_Dungeon_Update: LD A, $mem_current_mode CALL =Animation_Wait_Mode CALL =Update_Blinking_Counter CALL =Check_Open_Menu_button CALL =Update_Animation_Steps LD HL, $mem_entities_list CALL =Center_viewport_around_entity LD A, $00 LD $mem_oam_buffer_low, A CALL =Display_Animation_List CALL =Display_Entities LD A, $mem_bunny_status_tile LD ($9d6f), A LD A, $mem_loop_frame_timer INC A LD $mem_loop_frame_timer, A CALL =Play_Music CALL =Play_Sound_Effect .ENABLE_VBLANK_INTERRUPTS RETI