.INCLUDE "definitions.gbasm" .INCLUDE "init.gbasm" .MACRODEF HBLANK_WAIT LD A, $reg_lcd_controller BIT 7, A JR Z, =$HBlank_Wait.End $HBlank_Wait.loop: LD A, $reg_lcd_status AND $03 CP $00 JR NZ, =$HBlank_Wait.loop $HBlank_Wait.End: .END .MACRODEF ENABLE_WINDOW_NO_WAIT_HBLANK XOR A LD $reg_viewport_x, A LD $reg_viewport_y, A LD A, $lcdc_window_enabled LD $reg_lcd_controller, A .END .MACRODEF ENABLE_WINDOW .HBLANK_WAIT .ENABLE_WINDOW_NO_WAIT_HBLANK .END .MACRODEF DISABLE_WINDOW PUSH BC LD A, $mem_prepared_viewport_x LD B, A LD A, $mem_prepared_viewport_y LD C, A .HBLANK_WAIT LD A, B LD $reg_viewport_x, A LD A, C LD $reg_viewport_y, A LD A, $mem_prepared_color_palette LD $reg_bg_palette, A LD A, $lcdc_window_disabled LD $reg_lcd_controller, A POP BC .END .MACRODEF ENABLE_VBLANK_INTERRUPTS LD A, $03 LD $reg_interrupt_enable, A .END .MACRODEF RESET_STAT_INTERRUPT LD A, $reg_interrupt_flags RES 1, A LD $reg_interrupt_flags, A .END .MACRODEF ENABLE_LYC_INTERRUPT .RESET_STAT_INTERRUPT LD A, $02 LD $reg_interrupt_enable, A LD A, $40 LD $reg_lcd_status, A .END .MACRODEF DISABLE_LYC_INTERRUPT LD A, $reg_interrupt_enable RES 1, A LD $reg_interrupt_enable, A .END Entrypoint: CALL =Initialize_RNG LD A, $20 LD $mem_bunny_health, A New_Dungeon: LD SP, $fffe CALL =Dungeon_Generation CALL =Initialize_Entities CALL =Initialize_Objects CALL =Load_Tile CALL =Load_Map CALL =Load_Objects LD A, $00 LD $mem_bunny_flags, A LD $mem_display_flag, A LD A, $enum_dungeon_mode LD $mem_current_mode, A LD $mem_requested_mode, A ; LD HL, $9c0f ; LD BC, =Debug_Text ; CALL =Print_str LD A, $68 LD ($9c02), A .ENABLE_WINDOW_NO_WAIT_HBLANK .ENABLE_VBLANK_INTERRUPTS EI Wait_for_Interrupt.loop: HALT EI JP =Wait_for_Interrupt.loop VBLANK_Entrypoint: .ENABLE_WINDOW_NO_WAIT_HBLANK ; LD A, $tmp_var_5 ; LD HL, $9c12 ; CALL =Print_8bit ; LD A, $tmp_var_6 ; LD HL, $9c0d ; CALL =Print_8bit ; LD A, $tmp_var_4 ; LD HL, $9c0a ; CALL =Print_8bit ; LD A, $mem_bunny_current_room_idx ; LD HL, $9c07 ; CALL =Print_8bit LD A, $palette_bold_font LD $reg_bg_palette, A LD HL, $9c00 LD A, $mem_bunny_health CALL =Print_8bit CALL $OAM_DMA_Transfer_routine CALL =Loading_Mode_VBlank LD A, $mem_current_mode CP $enum_dungeon_mode JR NZ, =Skip_VBlank_Dungeon_Update CALL =Display_Prepared_Block CALL =Display_Object Skip_VBlank_Dungeon_Update: CALL =Copy_Dialogue_Buffer CALL =Display_dialogue_cursor ; LYC LD A, $09 LD $reg_lyc, A .ENABLE_LYC_INTERRUPT .RESET_STAT_INTERRUPT EI CALL =Pad_Button_Check LD A, $mem_current_mode CP $enum_dungeon_mode JR NZ, =Skip_Dungeon_Update CALL =Object_Interactions_Check CALL =Entities_Actions CALL =Respawn_Entities CALL =Prepare_Scrolling_Map Skip_Dungeon_Update: CALL =Loading_Mode_Regular CALL =Update_Animation_Steps CALL =Check_Open_Menu_button CALL =Move_dialogue_cursor CALL =Check_dialogue_action LD A, $00 LD $mem_oam_buffer_low, A CALL =Display_Animation_List CALL =Display_Entities .ENABLE_VBLANK_INTERRUPTS RET STAT_Entrypoint: PUSH AF LD A, $reg_lyc CP $09 JR Z, =STAT_Entrypoint.End_Top_Bar CP $67 JR Z, =STAT_Entrypoint.Start_dialogue STAT_Entrypoint.Thin_font: LD A, $palette_thin_font LD $reg_bg_palette, A JR =STAT_Entrypoint.skip_dialogue STAT_Entrypoint.Start_dialogue: LD A, $mem_display_flag BIT 0, A JR Z, =STAT_Entrypoint.skip_dialogue .ENABLE_WINDOW LD A, $mem_display_flag BIT 1, A JR Z, =STAT_Entrypoint.Thin_font LD A, $palette_bold_font LD $reg_bg_palette, A LD A, $77 LD $reg_lyc, A .RESET_STAT_INTERRUPT POP AF RETI STAT_Entrypoint.skip_dialogue: .DISABLE_LYC_INTERRUPT POP AF RET STAT_Entrypoint.End_Top_Bar: .DISABLE_WINDOW LD A, $67 LD $reg_lyc, A .RESET_STAT_INTERRUPT POP AF RETI .INCLUDE "tiles.gbasm" .INCLUDE "rng.gbasm" .INCLUDE "utils.gbasm" .INCLUDE "buttons.gbasm" .INCLUDE "map/loading.gbasm" .INCLUDE "map/generation.gbasm" .INCLUDE "map/objects.gbasm" .INCLUDE "entity/utils.gbasm" .INCLUDE "entity/init.gbasm" .INCLUDE "entity/bunny.gbasm" .INCLUDE "entity/actions.gbasm" .INCLUDE "entity/collisions.gbasm" .INCLUDE "entity/display.gbasm" .INCLUDE "animation.gbasm" .INCLUDE "attacks.gbasm" .INCLUDE "gui.gbasm" .INCLUDE "tileset.gbasm" .INCLUDE "dialogues.gbasm"