aboutsummaryrefslogtreecommitdiff
path: root/entities.gbasm
diff options
context:
space:
mode:
Diffstat (limited to 'entities.gbasm')
-rw-r--r--entities.gbasm600
1 files changed, 0 insertions, 600 deletions
diff --git a/entities.gbasm b/entities.gbasm
deleted file mode 100644
index 28df2d8..0000000
--- a/entities.gbasm
+++ /dev/null
@@ -1,600 +0,0 @@
-Prepare_Entities:
- LD A, $00
- LD $tmp_var_1, A
- LD HL, $mem_entities_list
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- CALL =Prepare_Entity
- LD BC, $00a0
- LD HL, $mem_oam_buffer
-
- LD A, $tmp_var_1
- ADD L
- LD L, A
-
- LD A, $tmp_var_1
- XOR $ff
- INC A
- ADD C
- LD C, A
-
- CALL =bzero
-
- RET
-
-Prepare_Entity:
- LD A, (HL+)
- LD E, A
-
- CP $00
- JP Z, =Prepare_Entity.skip
-
- LD A, (HL+)
- ADD $80
- LD D, A
- LD A, $mem_viewport_x
- LD B, A
- SUB $82
- CP D
- JP NC, =Prepare_Entity.skip
- ADD $0e
- CP D
- JP C, =Prepare_Entity.skip
- LD A, D
- SUB $80
- SUB B
- AND $0f
- SWAP A
- LD B, A
-
- LD A, (HL+)
- ADD $80
- LD D, A
- LD A, $mem_viewport_y
- LD C, A
- SUB $82
- CP D
- JP NC, =Prepare_Entity.skip
- ADD $0d
- CP D
- JP C, =Prepare_Entity.skip
- LD A, D
- SUB $80
- SUB C
- AND $0f
- SWAP A
- ADD $02
- LD C, A
-
- LD A, $mem_bunny_direction
- BIT 3, A
- JR Z, =Prepare_Entity.Viewport_offset_end
- AND $07
- CP $enum_direction_down
- JR Z, =Prepare_Entity.Viewport_offset_down
- CP $enum_direction_right
- JR Z, =Prepare_Entity.Viewport_offset_right
- CP $enum_direction_up
- JR Z, =Prepare_Entity.Viewport_offset_up
-
- Prepare_Entity.Viewport_offset_left:
- LD A, $reg_viewport_x
- SUB $08
- AND $0f
- XOR $ff
- ADD $12
- ADD B
-
- LD B, A
- JR =Prepare_Entity.Viewport_offset_end
-
- Prepare_Entity.Viewport_offset_right:
- LD A, $reg_viewport_x
- SUB $08
- AND $0f
- XOR $ff
- ADD B
-
- LD B, A
-
- JR =Prepare_Entity.Viewport_offset_end
-
- Prepare_Entity.Viewport_offset_up:
- LD A, $reg_viewport_y
- SUB $08
- AND $0f
- XOR $ff
- ADD $12
- ADD C
-
- LD C, A
-
- JR =Prepare_Entity.Viewport_offset_end
-
- Prepare_Entity.Viewport_offset_down:
- LD A, $reg_viewport_y
- SUB $08
- AND $0f
- XOR $ff
- ADD C
-
- LD C, A
-
- Prepare_Entity.Viewport_offset_end:
-
- LD A, (HL+)
- BIT 3, A
- LD D, A
- LD A, $00
- JR Z, =Prepare_Entity.Not_Moving_Animation
-
- LD A, D
- AND $07
-
- CP $enum_direction_down
- JR Z, =Prepare_Entity.moving_offset_down
- CP $enum_direction_right
- JR Z, =Prepare_Entity.moving_offset_right
- CP $enum_direction_up
- JR Z, =Prepare_Entity.moving_offset_up
-
- Prepare_Entity.moving_offset_left:
- LD A, $mem_moving_animation_step
- XOR $ff
- ADD B
- LD B, A
-
- JR =Prepare_Entity.moving_offset_end
-
- Prepare_Entity.moving_offset_right:
- LD A, $mem_moving_animation_step
- INC A
- ADD B
- LD B, A
-
- JR =Prepare_Entity.moving_offset_end
-
- Prepare_Entity.moving_offset_up:
- LD A, $mem_moving_animation_step
- XOR $ff
- ADD C
- LD C, A
-
- JR =Prepare_Entity.moving_offset_end
-
- Prepare_Entity.moving_offset_down:
- LD A, $mem_moving_animation_step
- INC A
- ADD C
- LD C, A
-
- Prepare_Entity.moving_offset_end:
-
-
- LD A, $mem_moving_animation_step
- Prepare_Entity.Not_Moving_Animation:
-
- SUB $08
- BIT 7, A
- JR Z, =Prepare_Entity.Hop_ABS1_end
-
- ; Adding hop animation to Y
- XOR $ff
- INC A
- Prepare_Entity.Hop_ABS1_end:
- SUB $04
- BIT 7, A
- JR Z, =Prepare_Entity.Hop_ABS2_end
- XOR $ff
- INC A
- Prepare_Entity.Hop_ABS2_end:
- ADD C
-
- LD C, A
-
- LD A, D
- AND $07
-
- CP $enum_direction_left
- JR Z, =Prepare_Entity.Left_Direction_sprite
- CP $enum_direction_right
- JR Z, =Prepare_Entity.Right_Direction_sprite
- CP $enum_direction_up
- JR Z, =Prepare_Entity.Up_Direction_sprite
- JP =Prepare_Entity.Down_Direction_sprite
-
- Prepare_Entity.Left_Direction_sprite:
- LD D, $00
- JP =Prepare_Entity.Write_OBJ
-
- Prepare_Entity.Right_Direction_sprite:
- LD A, $02
- ADD E
- LD E, A
- LD D, $20
- JP =Prepare_Entity.Write_OBJ
-
- Prepare_Entity.Up_Direction_sprite:
- LD A, $04
- ADD E
- LD E, A
- LD D, $00
- JP =Prepare_Entity.Write_OBJ
-
- Prepare_Entity.Down_Direction_sprite:
- LD A, $08
- ADD E
- LD E, A
- LD D, $00
- JP =Prepare_Entity.Write_OBJ
-
- Prepare_Entity.Write_OBJ:
- PUSH HL
- ; First OBJ (left)
- LD HL, $mem_oam_buffer
- LD A, $tmp_var_1
- LD L, A
- LD A, C
- LD (HL+), A
- LD A, B
- LD (HL+), A
- LD A, E
- INC A
- LD (HL+), A
- LD A, D
- LD (HL+), A
-
- ; Second OBJ
- LD A, B
- ADD $08
- LD B, A
-
- LD A, C
- LD (HL+), A
- LD A, B
- LD (HL+), A
- LD A, E
- XOR $02
- INC A
- LD (HL+), A
- LD A, D
- LD (HL+), A
- LD A, L
- LD $tmp_var_1, A
- POP HL
-
- Prepare_Entity.skip:
- LD A, L
- AND $f8
- ADD $08
- LD L, A
- RET
-
-Entities_Behaviours:
- CALL =Reset_Entities_Collision_Map
-
- LD HL, $mem_entities_list
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- CALL =Entity_Behaviour
- RET
-
-Entity_Behaviour:
- LD A, (HL+)
- CP $00
- JR Z, =Entity_Behaviour.skip
-
- INC HL
- INC HL
- INC HL
-
- LD A, (HL+)
- LD D, A
- LD A, (HL+)
- LD E, A
-
- PUSH HL
-
- LD A, L
- AND $f8
- LD L, A
-
- ; This is confusing but this thing is actually CALL DE
- LD BC, =Entity_Behaviour.interaction_end
- PUSH BC
- PUSH DE
- RET
- Entity_Behaviour.interaction_end:
-
- POP HL
-
- Entity_Behaviour.skip:
- LD A, L
- AND $f8
- ADD $08
- LD L, A
- RET
-
-Carve_Entity_Collision_Map: ; X in C, Y in B
- PUSH BC
- PUSH HL
- PUSH AF
-
- LD A, C
- AND $e0
- JR NZ, =Carve_Entity_Collision_Map.end
-
- LD A, B
- AND $e0
- JR NZ, =Carve_Entity_Collision_Map.end
-
- LD A, C
-
- LD H, $00
- CP $10
- RL B
- AND $0f
- CP $08
- RL B
- AND $07
- LD L, A
-
- LD A, B
- LD BC, $mem_entities_collisions
- OR C
- LD C, A
- LD A, (BC)
-
- OR (HL)
- LD (BC), A
-
- Carve_Entity_Collision_Map.end:
-
- POP AF
- POP HL
- POP BC
- RET
-
-
-Get_Position_After_Move: ; entity (whatever alignement) in HL, direction to test in A, X Result in C, Y result in B
- PUSH HL
- PUSH AF
-
- LD A, L
- AND $f8
- LD L, A
-
- INC HL
-
- LD A, (HL+)
- LD C, A
- LD A, (HL+)
- LD B, A
-
- POP AF
- BIT 3, A
- JR Z, =Get_Position_After_Move.direction_end
-
- PUSH BC
-
- DEC A
- LD B, A
-
- SLA A
- AND $02
- DEC A
-
- BIT 1, B
- JR NZ, =Get_Position_After_Move.vertical
-
- Get_Position_After_Move.horizontal:
- POP BC
- ADD C
- LD C, A
- JR =Get_Position_After_Move.direction_end
-
- Get_Position_After_Move.vertical:
- POP BC
- ADD B
- LD B, A
-
- Get_Position_After_Move.direction_end:
-
- POP HL
- RET
-
-Fox_AI:
- PUSH HL
-
- INC HL
- INC HL
- INC HL
-
- LD A, $mem_map_loading_flags
- BIT 1, A
- JR Z, =Fox_AI.Update_Position.end
-
- LD A, (HL)
- BIT 3, A
- JR Z, =Fox_AI.Update_Position.end
-
- RES 3, A
- DEC A
-
- LD C, A
- AND $01
- SLA A
- AND $02
- DEC A
- LD B, A
-
- LD A, L
- AND $f8
- INC A
- LD L, A
-
- BIT 1, C
- JR NZ, =Fox_AI.vertical_tile_move
-
- Fox_AI.horizontal_tile_move:
- LD A, (HL)
- ADD B
- LD (HL), A
- JP =Fox_AI.Update_Position.end
-
- Fox_AI.vertical_tile_move:
- INC HL
- LD A, (HL)
- ADD B
- LD (HL), A
-
- Fox_AI.Update_Position.end:
-
- LD A, L
- AND $f8
- ADD $03
- LD L, A
-
- LD A, $mem_moving_animation_step
- CP $01
- JR NZ, =Fox_AI.end
-
- LD A, $mem_bunny_direction
- BIT 3, A
- JR Z, =Fox_AI.end
-
- CALL =RNG_Step
- AND $08
- LD B, A
-
- LD A, $04
- CALL =RNG_Bound
- INC A
- OR $08
- LD B, A
-
- PUSH BC
- CALL =Get_Position_After_Move
- LD A, C
- CALL =Is_Collisionable
- CALL =Carve_Entity_Collision_Map
- POP BC
- CP $00
- JR Z, =Fox_AI.change_direction
-
- RES 3, B
-
- Fox_AI.change_direction:
- LD (HL), B
-
- Fox_AI.end:
-
- POP HL
- RET
-
-Is_Collisionable: ; X in A, Y in B, Result A
- PUSH BC
- PUSH HL
-
- CP $20
- JR NC, =Is_Collisionable.Solid
-
- LD C, A
- LD A, B
- CP $20
- JR NC, =Is_Collisionable.Solid
- LD A, C
-
- LD H, $00
- CP $10
- RL B
- AND $0f
- CP $08
- RL B
- AND $07
- LD L, A
-
- LD C, B
- LD B, $mem_dungeon_map_high
- LD A, (BC)
- PUSH AF
- LD A, C
- LD BC, $mem_entities_collisions
- OR C
- LD C, A
- LD A, (BC)
- XOR $ff ; 1 in the dungeon map means walkable, 1 in the entity map means unwalkable, we need to invert it.
- LD B, A
- POP AF
- AND B
-
- AND (HL)
- CP $01
- LD A, $00
- RL A
-
- POP HL
- POP BC
- RET
-
- Is_Collisionable.Solid:
- LD A, $01
- POP HL
- POP BC
-
- RET
-
-Reset_Entities_Collision_Map:
- LD A, $mem_moving_animation_step
- CP $02
- JR NZ, =Reset_Entities_Collision_Map.end
-
- LD HL, $mem_entities_collisions
- LD BC, $0080
- CALL =bzero
-
- LD HL, $mem_entities_list
- Reset_Entities_Collision_Map.loop:
- INC L
- INC L
- INC L
-
- LD A, (HL)
- CALL =Get_Position_After_Move
- CALL =Carve_Entity_Collision_Map
-
- LD A, L
- AND $f8
- ADD $08
- LD L, A
- CP $00
- JR NZ, =Reset_Entities_Collision_Map.loop
-
- Reset_Entities_Collision_Map.end:
- RET