summaryrefslogtreecommitdiff
path: root/engine/pinball_game/object_collision/diglett_bonus_object_collision.asm
blob: e9ad8511cc04af147e06371ff797294380c53e9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
CheckDiglettBonusStageGameObjectCollisions: ; 0x19ab3
	call CheckDiglettBonusStageDiglettHeadsCollision
	call CheckDiglettBonusStageDugtrioCollision
	ret

CheckDiglettBonusStageDiglettHeadsCollision: ; 0x19aba
	ld a, [wTriggeredGameObject]
	inc a
	jr nz, .asm_19b16
	ld a, [wd73b]
	bit 7, a
	jr nz, .asm_19b16
	ld a, [wIsBallColliding]
	and a
	ret z ; is a collision happening?
	ld a, [wCurCollisionAttribute]
	sub $19
	ret c ; is the pinball colliding with a Diglett head?
	cp $33
	ret nc
	ld c, a
	ld b, $0
	ld hl, Data_19b18
	add hl, bc
	ld a, [hl]
	cp $a
	jr nc, .asm_19aed
	ld a, [wBallXPos + 1]
	cp $48
	ld a, $11
	jr nc, .asm_19af7
	xor a
	jr .asm_19af7

.asm_19aed
	ld a, [wBallXPos + 1]
	cp $68
	ld a, $11
	jr nc, .asm_19af7
	xor a
.asm_19af7
	add [hl]
	ld [wTriggeredGameObjectIndex], a
	add $0
	ld [wTriggeredGameObject], a
	ld b, a
	ld hl, wd73b
	ld [hl], $0
	ld a, [wPreviousTriggeredGameObject]
	cp b
	jr z, .asm_19b16
	ld a, [wTriggeredGameObjectIndex]
	ld [hli], a
	ld a, [wTriggeredGameObject]
	ld [hl], a
	scf
	ret

.asm_19b16
	and a
	ret

Data_19b18:
	db $01, $01, $01
	db $02, $02, $02
	db $03, $03, $03
	db $04, $04, $04
	db $05, $05, $05
	db $06, $06, $06
	db $07, $07, $07
	db $08, $08, $08
	db $09, $09, $09
	db $0A, $0A, $0A
	db $0B, $0B, $0B
	db $0C, $0C, $0C
	db $0D, $0D, $0D
	db $0E, $0E, $0E
	db $0F, $0F, $0F
	db $10, $10, $10
	db $11, $11, $11

CheckDiglettBonusStageDugtrioCollision: ; 0x19b4b
	ld a, [wTriggeredGameObject]
	inc a
	jr nz, .asm_19b86
	ld a, [wd75f]
	bit 7, a
	jr nz, .asm_19b86
	ld a, [wIsBallColliding]
	and a
	ret z
	ld a, [wCurCollisionAttribute]
	sub $14
	ret c
	cp $5
	ret nc
	ld a, $1
	ld [wTriggeredGameObjectIndex], a
	add $1f
	ld [wTriggeredGameObject], a
	ld b, a
	ld hl, wd75f
	ld [hl], $0
	ld a, [wPreviousTriggeredGameObject]
	cp b
	jr z, .asm_19b86
	ld a, [wTriggeredGameObjectIndex]
	ld [hli], a
	ld a, [wTriggeredGameObject]
	ld [hl], a
	scf
	ret

.asm_19b86
	and a
	ret