.INCLUDE "definitions.gbasm" .INCLUDE "init.gbasm" .INCLUDE "utils.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 SET_WINDOW_LCDC_E LD A, $mem_display_flag BIT 3, A LD E, $00 JR Z, =$No_Window LD E, $60 $No_Window: .END .MACRODEF ENABLE_TOP_BAR XOR A LD $reg_viewport_x, A LD A, $57 LD $reg_viewport_y, A LD A, $lcdc_guibg_tilemap OR E LD $reg_lcd_controller, A LD A, $palette_bold_font LD $reg_bg_palette, A .END .MACRODEF DISABLE_TOP_BAR LD A, $mem_prepared_viewport_x LD $reg_viewport_x, A LD A, $mem_prepared_viewport_y LD $reg_viewport_y, A LD A, $mem_prepared_color_palette LD $reg_bg_palette, A LD A, $lcdc_mapbg_tilemap OR E LD $reg_lcd_controller, A .END .MACRODEF ENABLE_DIALOGUE .HBLANK_WAIT LD A, $98 LD $reg_viewport_x, A LD A, $b8 LD $reg_viewport_y, A LD A, $lcdc_guibg_tilemap OR E LD $reg_lcd_controller, A .END .MACRODEF DISABLE_DIALOGUE 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_mapbg_tilemap OR E LD $reg_lcd_controller, A POP BC .END .MACRODEF ENABLE_VBLANK_INTERRUPTS LD A, $reg_interrupt_flags RES 0, A LD $reg_interrupt_flags, A LD A, $reg_interrupt_enable OR $01 LD $reg_interrupt_enable, A .END .MACRODEF RESET_INTERRUPTS LD A, $00 LD $reg_interrupt_flags, A .END .MACRODEF ENABLE_LYC_INTERRUPT LD A, low(=STAT_Entrypoint) LD ($mem_stat_jump_destination), A LD A, high(=STAT_Entrypoint) LD ($mem_stat_jump_destination+1), A .RESET_INTERRUPTS LD A, $40 LD $reg_lcd_status, A LD A, $02 LD $reg_interrupt_enable, 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 HL, $mem_bunny_attacks LD A, $01 LD (HL+), A XOR A LD (HL+), A LD (HL+), A LD (HL+), A LD A, $01 LD $mem_number_of_attacks, A LD A, bank(=Morning_Forest) LD ($mem_dungeon), A LD HL, ptr(=Morning_Forest) LD A, H LD ($mem_dungeon+1), A LD A, L LD ($mem_dungeon+2), A CALL =Load_Tile CALL =Load_Music JP =New_Dungeon .INCLUDE "tiles.gbasm" .INCLUDE "rng.gbasm" .INCLUDE "dialogues/utils.gbasm" .INCLUDE "buttons.gbasm" .INCLUDE "map/utils.gbasm" .INCLUDE "map/loading/dungeontiles.gbasm" .INCLUDE "map/loading/romtiles.gbasm" .INCLUDE "map/generation.gbasm" .INCLUDE "map/objects.gbasm" .INCLUDE "map/generationevents.gbasm" .INCLUDE "gui.gbasm" .INCLUDE "modes/vblank_handler_list.gbasm" .INCLUDE "entity/utils.gbasm" .INCLUDE "entity/init.gbasm" .INCLUDE "entity/list.gbasm" .INCLUDE "entity/questgoal.gbasm" .INCLUDE "entity/actions.gbasm" .INCLUDE "entity/collisions.gbasm" .INCLUDE "entity/display.gbasm" .INCLUDE "animation.gbasm" .INCLUDE "playerattacks.gbasm" .INCLUDE "enemiesattacks.gbasm" .INCLUDE "dialogues/functions.gbasm" .INCLUDE "map/loading/dungeoninfos.gbasm" .INCLUDE "music/load.gbasm" .PADTO $4000 .INCLUDE "tileset.gbasm" .INCLUDE "text.gbasm" .INCLUDE "dialogues/dialogues.gbasm" .INCLUDE "map/maps.gbasm" .INCLUDE "map/dungeons.gbasm" _music_Dungeon: .INCLUDEBIN "music/morning-forest.vgm"