diff options
-rw-r--r-- | definitions.gbasm | 5 | ||||
-rw-r--r-- | dialogues.gbasm | 8 | ||||
-rw-r--r-- | dialogues.gbtxt | 8 | ||||
-rw-r--r-- | entity/init.gbasm | 5 | ||||
-rw-r--r-- | gui.gbasm | 154 | ||||
-rw-r--r-- | main.gbasm | 15 | ||||
-rw-r--r-- | playerattacks.gbasm | 49 | ||||
-rw-r--r-- | scripts/generate-tiledata.py | 2 | ||||
-rw-r--r-- | sprites/gui/disabled-cursor.png | bin | 0 -> 126 bytes | |||
-rw-r--r-- | tiles.gbasm | 2 | ||||
-rw-r--r-- | tileset.gbasm | 3 |
11 files changed, 192 insertions, 59 deletions
diff --git a/definitions.gbasm b/definitions.gbasm index 832377d..054ea4e 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -85,7 +85,7 @@ .DEFINE dialogue_menu_choice1_routine $c018 ; Takes also $c019 .DEFINE dialogue_menu_choice2_routine $c01a ; Takes also $c01b .DEFINE dialogue_menu_choice3_routine $c01c ; Takes also $c01d -.DEFINE dialogue_menu_choice3_routine $c01e ; Takes also $c01f +.DEFINE dialogue_menu_choice4_routine $c01e ; Takes also $c01f .DEFINE mem_last_button_action ($c020) .DEFINE mem_loading_step ($c021) @@ -111,6 +111,9 @@ .DEFINE mem_bunny_status_clear_turn_counter ($c02f) +.DEFINE mem_bunny_attacks $c030 ; Takes the memory from c030 to c033 +.DEFINE mem_current_focused_attack_ep_cost ($c034) + .DEFINE mem_next_free_head_lower_bytes ($c6ff) .DEFINE mem_dungeon_generation_heads $c700 ; Takes the memory from c700 to c717 diff --git a/dialogues.gbasm b/dialogues.gbasm index 7ec280e..0deea6d 100644 --- a/dialogues.gbasm +++ b/dialogues.gbasm @@ -4,11 +4,11 @@ Text_1: .DB 0x91, 0x8e, 0x95, 0x95, 0x98, 0x0, 0xa5, 0xff Debug_Text: .DB 0x8d, 0x8b, 0x90, 0xff -Menu_Choice_1: +Hop_Attack_Menu_Txt: .DB 0x91, 0x98, 0x99, 0xff -Menu_Choice_2: +Heal_Attack_Menu_Txt: .DB 0x91, 0x8e, 0x8a, 0x95, 0xff -Menu_Choice_3: +Freeze_Attack_Menu_Txt: .DB 0x8f, 0x9b, 0x8e, 0x8e, 0xa3, 0x8e, 0xff -Menu_Choice_4: +Earcoptr_Attack_Menu_Txt: .DB 0x8e, 0x8a, 0x9b, 0x8c, 0x98, 0x99, 0x9d, 0x9b, 0xff diff --git a/dialogues.gbtxt b/dialogues.gbtxt index 7d42325..790b759 100644 --- a/dialogues.gbtxt +++ b/dialogues.gbtxt @@ -1,7 +1,7 @@ Bunny_Prefix: Bunny: Text_1: Hello ! Debug_Text: DBG -Menu_Choice_1: Hop -Menu_Choice_2: Heal -Menu_Choice_3: Freeze -Menu_Choice_4: Earcoptr +Hop_Attack_Menu_Txt: Hop +Heal_Attack_Menu_Txt: Heal +Freeze_Attack_Menu_Txt: Freeze +Earcoptr_Attack_Menu_Txt: Earcoptr diff --git a/entity/init.gbasm b/entity/init.gbasm index 2bb9242..60edff6 100644 --- a/entity/init.gbasm +++ b/entity/init.gbasm @@ -1,4 +1,6 @@ Initialize_Entities: + LD A, $mem_bunny_mana + LD C, A LD A, $mem_bunny_health LD B, A LD HL, $mem_entities_list @@ -11,6 +13,9 @@ Initialize_Entities: LD A, B LD $mem_bunny_health, A + LD A, C + LD $mem_bunny_mana, A + LD HL, $mem_entities_list LD A, $01 LD (HL+), A @@ -12,6 +12,10 @@ .END Copy_Dialogue_Buffer: + LD A, $mem_current_focused_attack_ep_cost + LD HL, $9c43 + CALL =Print_8bit_Thin + LD A, $mem_display_flag BIT 2, A RET Z @@ -33,47 +37,64 @@ Copy_Dialogue_Buffer: JP =tilemap_memcpy Init_Menu: - LD HL, $dialogue_menu_choice1 - LD BC, =Menu_Choice_1 - CALL =Print_str - - LD HL, $dialogue_menu_choice2 - LD BC, =Menu_Choice_2 - CALL =Print_str - - LD HL, $dialogue_menu_choice3 - LD BC, =Menu_Choice_3 - CALL =Print_str - - LD HL, $dialogue_menu_choice4 - LD BC, =Menu_Choice_4 - CALL =Print_str - - LD HL, $dialogue_menu_choice1_routine - LD BC, =Hop_Attack - LD A, B - LD (HL+), A - LD A, C - LD (HL+), A - - LD BC, =Heal_Attack - LD A, B - LD (HL+), A - LD A, C - LD (HL+), A - - LD BC, =Freeze_Attack - LD A, B - LD (HL+), A - LD A, C - LD (HL+), A - - LD BC, =Earcoptr_Attack - LD A, B - LD (HL+), A - LD A, C - LD (HL+), A - + LD HL, $mem_bunny_attacks + + .MACRODEF SETUP_NEXT_ATTACK_MENU dialogue_buffer choice_routine ; Attack index pointer in (HL) + PUSH HL + + ; Getting Attack list pointer from index + LD E, (HL) + LD D, $00 + SLA E + RL D + SLA E + RL D + SLA E + RL D + + LD HL, =Attack_List + LD A, L + ADD E + LD L, A + LD A, H + ADC D + LD H, A + + ; Printing txt into dialogue buffer + LD A, (HL+) + LD B, A + LD A, (HL+) + LD C, A + + LD E, L + LD D, H + LD HL, $dialogue_buffer + CALL =Print_str + LD H, D + LD L, E + + ; Setting up choice routine + LD A, (HL+) + LD B, A + LD A, (HL+) + LD C, A + + LD D, H + LD E, L + LD HL, $choice_routine + LD A, B + LD (HL+), A + LD A, C + LD (HL), A + + POP HL + INC HL + .END + + .SETUP_NEXT_ATTACK_MENU $dialogue_menu_choice1, $dialogue_menu_choice1_routine + .SETUP_NEXT_ATTACK_MENU $dialogue_menu_choice2, $dialogue_menu_choice2_routine + .SETUP_NEXT_ATTACK_MENU $dialogue_menu_choice3, $dialogue_menu_choice3_routine + .SETUP_NEXT_ATTACK_MENU $dialogue_menu_choice4, $dialogue_menu_choice4_routine RET Nothing: @@ -91,28 +112,38 @@ Display_dialogue_cursor: LD A, $mem_current_mode CP $enum_dungeon_menu_mode RET NZ + + LD A, $mem_current_focused_attack_ep_cost + LD B, A + LD A, $mem_bunny_mana + CP B + LD H, $69 + JR NC, =.Skip_Disable_cursor_setting + LD H, $6b + .Skip_Disable_cursor_setting: + LD A, $mem_menu_cursor_position LD BC, $0000 LD DE, $0000 CP $00 JR NZ, =.choice1_false - LD B, $69 + LD B, H .choice1_false: CP $01 JR NZ, =.choice2_false - LD C, $69 + LD C, H .choice2_false: CP $02 JR NZ, =.choice3_false - LD D, $69 + LD D, H .choice3_false: CP $03 JR NZ, =.choice4_false - LD E, $69 + LD E, H .choice4_false: LD A, B @@ -144,12 +175,43 @@ Move_dialogue_cursor: LD A, $mem_menu_cursor_position XOR $02 LD $mem_menu_cursor_position, A - RET + JR =Reload_EP_Cost .Vertical_axis: LD A, $mem_menu_cursor_position XOR $01 LD $mem_menu_cursor_position, A + +Reload_EP_Cost: + LD A, $mem_menu_cursor_position + ADD low($mem_bunny_attacks) + LD L, A + LD A, high($mem_bunny_attacks) + ADC $00 + LD H, A + + ; Getting Attack list pointer from index + LD E, (HL) + LD D, $00 + SLA E + RL D + SLA E + RL D + SLA E + RL D + + LD HL, =Attack_List + LD A, L + ADD E + ADD $04 + LD L, A + LD A, H + ADC D + LD H, A + + LD A, (HL) + LD $mem_current_focused_attack_ep_cost, A + RET Check_dialogue_action: @@ -93,6 +93,8 @@ Entrypoint: CALL =Initialize_RNG LD A, $20 LD $mem_bunny_health, A + LD A, $3 + LD $mem_bunny_mana, A New_Dungeon: LD SP, $fffe LD HL, $mem_loaded_enemies_indices @@ -102,6 +104,16 @@ New_Dungeon: LD (HL+), A LD A, $03 LD (HL+), A + LD HL, $mem_bunny_attacks + LD A, $00 + LD (HL+), A + INC A + LD (HL+), A + INC A + LD (HL+), A + INC A + LD (HL+), A + CALL =Reload_EP_Cost CALL =Dungeon_Generation CALL =Initialize_Entities CALL =Initialize_Objects @@ -145,9 +157,6 @@ VBLANK_Entrypoint: LD HL, $9d72 LD A, $dbg_VBLANK_STATE CALL =Print_8bit - LD HL, $9c43 - LD A, $dbg_VBLANK_STATE - CALL =Print_8bit_Thin CALL $OAM_DMA_Transfer_routine CALL =Loading_Mode_VBlank diff --git a/playerattacks.gbasm b/playerattacks.gbasm index 6f1eead..2257e54 100644 --- a/playerattacks.gbasm +++ b/playerattacks.gbasm @@ -73,6 +73,55 @@ Canceled_Attack: LD $mem_bunny_direction, A RET +Attack_List: + .Hop: + ; Attack menu name string + .DB =Hop_Attack_Menu_Txt + + ; Attack function + .DB =Hop_Attack + + ; Energy point cost + .DB $01 + + .PADTO =.Hop+8 + + .Heal: + ; Attack menu name string + .DB =Heal_Attack_Menu_Txt + + ;Attack function + .DB =Heal_Attack + + ; Energy point cost + .DB $03 + + .PADTO =.Heal+8 + + .Freeze: + ; Attack menu name string + .DB =Freeze_Attack_Menu_Txt + + ; Attack function + .DB =Freeze_Attack + + ; Energy point cost + .DB $03 + + .PADTO =.Freeze+8 + + .Earcoptr: + ; Attack menu name string + .DB =Earcoptr_Attack_Menu_Txt + + ; Attack function + .DB =Earcoptr_Attack + + ; Energy point cost + .DB $04 + + .PADTO =.Earcoptr+8 + .INCLUDE "playerattacks/hop.gbasm" .INCLUDE "playerattacks/heal.gbasm" .INCLUDE "playerattacks/freeze.gbasm" diff --git a/scripts/generate-tiledata.py b/scripts/generate-tiledata.py index 2562e73..a743261 100644 --- a/scripts/generate-tiledata.py +++ b/scripts/generate-tiledata.py @@ -30,6 +30,8 @@ print("\n\t; Cursor") get_sprite_png_parse_output("./sprites/gui/cursor.png") print("\n\t; Energy") get_sprite_png_parse_output("./sprites/gui/energy-points.png") +print("\n\t; Disabled Cursor") +get_sprite_png_parse_output("./sprites/gui/disabled-cursor.png") sprite_idx = 0x80 print("\nFont_Data:") diff --git a/sprites/gui/disabled-cursor.png b/sprites/gui/disabled-cursor.png Binary files differnew file mode 100644 index 0000000..6364522 --- /dev/null +++ b/sprites/gui/disabled-cursor.png diff --git a/tiles.gbasm b/tiles.gbasm index da3d821..0ef0425 100644 --- a/tiles.gbasm +++ b/tiles.gbasm @@ -16,7 +16,7 @@ Load_Tile: LD HL, $9200 LD DE, =BG_Tile_Image_Data - LD BC, $04b0 + LD BC, $04c0 CALL =memcpy LD HL, $8600 diff --git a/tileset.gbasm b/tileset.gbasm index 204b13e..7c950a4 100644 --- a/tileset.gbasm +++ b/tileset.gbasm @@ -98,6 +98,9 @@ Small_sprites: ; Energy .DB $70, $70, $f8, $88, $fe, $be, $ff, $91, $ff, $b5, $ff, $81, $7e, $76, $08, $08 ; 0x6a + ; Disabled Cursor + .DB $00, $00, $22, $00, $36, $00, $1c, $00, $1c, $00, $36, $00, $22, $00, $00, $00 ; 0x6b + Font_Data: .DB $00, $00, $38, $3c, $44, $46, $44, $46, $44, $46, $44, $46, $38, $3c, $00, $00 ; 0x80 .DB $00, $00, $10, $18, $30, $38, $10, $18, $10, $18, $10, $18, $7c, $7e, $00, $00 ; 0x81 |