diff options
author | Astatin <[email protected]> | 2025-03-11 18:46:42 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2025-03-11 18:46:42 +0900 |
commit | ab45947d3fdc9885c497d9fc3dd124c7986f6ea4 (patch) | |
tree | 6800a9c3ebaebb5f35d54fd5ed1e0e8214953544 /entity | |
parent | 957834ffafd4c82700e27fd9d69b695bb2247d97 (diff) |
Add invincible friendly bunny you can talk to
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 64 | ||||
-rw-r--r-- | entity/bunny.gbasm | 8 | ||||
-rw-r--r-- | entity/init.gbasm | 10 | ||||
-rw-r--r-- | entity/list.gbasm | 39 | ||||
-rw-r--r-- | entity/questgoal.gbasm | 119 |
5 files changed, 176 insertions, 64 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index 7032766..051b488 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -136,6 +136,10 @@ Turn_Jump_table: JP =Penguin_Turn NOP + ; 05 + JP =QuestGoal_Turn + NOP + Interaction_Jump_table: ; 00 RET @@ -151,66 +155,6 @@ Interaction_Jump_table: JP =Open_Dialogue NOP -Open_Dialogue: - LD A, L - AND $f0 - LD L, A - - INC HL - - LD A, $mem_bunny_x - CP (HL) - JR Z, =.Vertical_check - - .Horizontal_check: - INC A - CP (HL) - JR Z, =.Left - .Right: - INC HL - INC HL - LD (HL), $enum_direction_right - JR =.Check_end - .Left: - INC HL - INC HL - LD (HL), $enum_direction_left - JR =.Check_end - .Vertical_check: - INC HL - LD A, $mem_bunny_y - INC A - CP (HL) - JR Z, =.Up - .Down: - INC HL - LD (HL), $enum_direction_down - JR =.Check_end - .Up: - INC HL - LD (HL), $enum_direction_up - JR =.Check_end - .Check_end: - - LD HL, $dialogue_first_line - LD BC, =Bunny_Prefix - CALL =Print_str - - LD HL, $dialogue_third_line - LD BC, =Text_1 - CALL =Print_str - - LD A, $07 - LD $mem_display_flag, A - - LD A, $mem_bunny_direction - AND $0f - LD $mem_bunny_direction, A - - LD A, $enum_dungeon_dialogue_mode - LD $mem_requested_mode, A - RET - Enemy_Interaction: LD A, L AND $f0 diff --git a/entity/bunny.gbasm b/entity/bunny.gbasm index d2b9148..8438d3e 100644 --- a/entity/bunny.gbasm +++ b/entity/bunny.gbasm @@ -106,10 +106,12 @@ Move_Bunny: JR =.Start_action_or_movement.end .Start_action_or_movement.test_action: - LD A, $mem_last_button_action - LD B, A LD A, $mem_button_action - CP B + LD B, A + LD A, $mem_last_button_action + XOR B + AND B + CP $00 JR Z, =.Start_action_or_movement.end BIT 0, A JR Z, =.Start_action_or_movement.end diff --git a/entity/init.gbasm b/entity/init.gbasm index 970607b..d263248 100644 --- a/entity/init.gbasm +++ b/entity/init.gbasm @@ -95,6 +95,8 @@ Initialize_Entities: LD A, $ff LD $mem_bunny_current_room_idx, A + LD A, $07 + CALL =Initialize_Entity CALL =Initialize_Enemy CALL =Initialize_Enemy CALL =Initialize_Enemy @@ -133,6 +135,9 @@ Initialize_Enemy: ; HL => pointer to entity struct CALL =RNG_Step AND $03 ADD $03 + +Initialize_Entity: ; HL => pointer to entity struct, A => entity loaded index + DBG LD E, A SLA A SLA A @@ -215,7 +220,6 @@ Initialize_Enemy: ; HL => pointer to entity struct LD (HL-), A LD (HL), A - POP BC RET @@ -262,9 +266,13 @@ Initialize_Enemy: ; HL => pointer to entity struct LD A, (BC) LD (HL+), A + INC BC + XOR A ; flags & status LD (HL+), A + + LD A, (BC) LD (HL+), A INC BC diff --git a/entity/list.gbasm b/entity/list.gbasm index acbe12d..7f09455 100644 --- a/entity/list.gbasm +++ b/entity/list.gbasm @@ -12,6 +12,9 @@ Entity_list: ; Starting health .DB $02 + ; Starting status + .DB $00 + ; Starting mana .DB $05 @@ -30,6 +33,9 @@ Entity_list: ; Starting health .DB $02 + ; Starting status + .DB $00 + ; Starting mana .DB $00 @@ -48,6 +54,9 @@ Entity_list: ; Starting health .DB $02 + ; Starting status + .DB $00 + ; Starting mana .DB $00 @@ -66,6 +75,9 @@ Entity_list: ; Starting health .DB $01 + ; Starting status + .DB $00 + ; Starting mana .DB $03 @@ -84,6 +96,9 @@ Entity_list: ; Starting health .DB $00 + ; Starting status + .DB $00 + ; Starting mana .DB $00 @@ -102,7 +117,31 @@ Entity_list: ; Starting health .DB $00 + ; Starting status + .DB $00 + ; Starting mana .DB $00 .PADTO =.Fimsh+8 + + .QuestGoalBunny: + ; Sprite address + .DB =OBJ_Tile_Image_Data.Bunny + + ; Turn Jump Table index + .DB $05 + + ; Interaction Jump Table index + .DB $02 + + ; Starting health + .DB $00 + + ; Starting status + .DB $02 + + ; Starting mana + .DB $00 + + .PADTO =.QuestGoalBunny+8 diff --git a/entity/questgoal.gbasm b/entity/questgoal.gbasm new file mode 100644 index 0000000..d39f786 --- /dev/null +++ b/entity/questgoal.gbasm @@ -0,0 +1,119 @@ +Open_Dialogue: + LD A, L + AND $f0 + LD L, A + + INC HL + + LD A, $mem_bunny_x + CP (HL) + JR Z, =.Vertical_check + + .Horizontal_check: + INC A + CP (HL) + JR Z, =.Left + .Right: + INC HL + INC HL + LD (HL), $enum_direction_right + JR =.Check_end + .Left: + INC HL + INC HL + LD (HL), $enum_direction_left + JR =.Check_end + .Vertical_check: + INC HL + LD A, $mem_bunny_y + INC A + CP (HL) + JR Z, =.Up + .Down: + INC HL + LD (HL), $enum_direction_down + JR =.Check_end + .Up: + INC HL + LD (HL), $enum_direction_up + JR =.Check_end + .Check_end: + + LD HL, $dialogue_first_line + LD BC, =Bunny_Prefix + CALL =Print_str + + LD HL, $dialogue_third_line + LD BC, =Text_1 + CALL =Print_str + + LD A, $07 + LD $mem_display_flag, A + + LD A, $mem_bunny_direction + AND $0f + LD $mem_bunny_direction, A + + LD A, $enum_dungeon_dialogue_mode + LD $mem_requested_mode, A + RET + +QuestGoal_Turn: + LD A, $mem_map_loading_flags + BIT 3, A + RET Z + + PUSH HL + PUSH BC + PUSH DE + INC HL + LD A, (HL+) + LD B, A + LD A, (HL+) + LD C, A + LD A, (HL+) + LD D, A + + .Start_action_or_movement: + LD A, $mem_moving_animation_step + CP $00 + JP NZ, =.Start_action_or_movement.end + + .Try_Walking: + + CALL =RNG_Step + BIT 0, A + JR Z, =.Start_action_or_movement.end + + CALL =Walking.Random_walker + .Start_action_or_movement.end: + + .End_movement: + LD A, $mem_moving_animation_step + CP $0f + JP NZ, =.End_movement.end + LD A, D + AND $07 + BIT 3, D + LD D, A + JR Z, =.End_movement.end + LD A, $01 + .ADD_A_TO_DIRECTION_BC + + .End_movement.end: + + .Skip_Turn: + LD A, L + AND $f0 + LD L, A + INC HL + LD A, B + LD (HL+), A + LD A, C + LD (HL+), A + LD A, D + LD (HL+), A + POP DE + POP BC + POP HL + RET |