This repository has been archived by the owner on Aug 26, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
bruno.asm
151 lines (134 loc) · 2.85 KB
/
bruno.asm
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
BrunoScript:
call BrunoShowOrHideExitBlock
call EnableAutoTextBoxDrawing
ld hl, BrunoTrainerHeader0
ld de, BrunoScriptPointers
ld a, [wBrunoCurScript]
call ExecuteCurMapScriptInTable
ld [wBrunoCurScript], a
ret
BrunoShowOrHideExitBlock:
; Blocks or clears the exit to the next room.
ld hl, wCurrentMapScriptFlags
bit 5, [hl]
res 5, [hl]
ret z
CheckEvent EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
jr z, .blockExitToNextRoom
ld a, $5
jp .setExitBlock
.blockExitToNextRoom
ld a, $24
.setExitBlock
ld [wNewTileBlockID], a
lb bc, 0, 2
predef_jump ReplaceTileBlock
ResetBrunoScript:
xor a
ld [wBrunoCurScript], a
ret
BrunoScriptPointers:
dw BrunoScript0
dw DisplayEnemyTrainerTextAndStartBattle
dw BrunoScript2
dw BrunoScript3
dw BrunoScript4
BrunoScript4:
ret
BrunoScriptWalkIntoRoom:
; Walk six steps upward.
ld hl, wSimulatedJoypadStatesEnd
ld a, D_UP
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
ld a, $6
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, $3
ld [wBrunoCurScript], a
ld [wCurMapScript], a
ret
BrunoScript0:
ld hl, BrunoEntranceCoords
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
xor a
ld [hJoyPressed], a
ld [hJoyHeld], a
ld [wSimulatedJoypadStatesEnd], a
ld [wSimulatedJoypadStatesIndex], a
ld a, [wCoordIndex]
cp $3 ; Is player standing one tile above the exit?
jr c, .stopPlayerFromLeaving
CheckAndSetEvent EVENT_AUTOWALKED_INTO_BRUNOS_ROOM
jr z, BrunoScriptWalkIntoRoom
.stopPlayerFromLeaving
ld a, $2
ld [hSpriteIndexOrTextID], a
call DisplayTextID ; "Don't run away!"
ld a, D_UP
ld [wSimulatedJoypadStatesEnd], a
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, $3
ld [wBrunoCurScript], a
ld [wCurMapScript], a
ret
BrunoEntranceCoords:
db $0A,$04
db $0A,$05
db $0B,$04
db $0B,$05
db $FF
BrunoScript3:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
xor a
ld [wJoyIgnore], a
ld [wBrunoCurScript], a
ld [wCurMapScript], a
ret
BrunoScript2:
call EndTrainerBattle
ld a, [wIsInBattle]
cp $ff
jp z, ResetBrunoScript
ld a, $1
ld [hSpriteIndexOrTextID], a
jp DisplayTextID
BrunoTextPointers:
dw BrunoText1
dw BrunoDontRunAwayText
BrunoTrainerHeader0:
dbEventFlagBit EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
db ($0 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
dw BrunoBeforeBattleText ; TextBeforeBattle
dw BrunoAfterBattleText ; TextAfterBattle
dw BrunoEndBattleText ; TextEndBattle
dw BrunoEndBattleText ; TextEndBattle
db $ff
BrunoText1:
TX_ASM
ld hl, BrunoTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
BrunoBeforeBattleText:
TX_FAR _BrunoBeforeBattleText
db "@"
BrunoEndBattleText:
TX_FAR _BrunoEndBattleText
db "@"
BrunoAfterBattleText:
TX_FAR _BrunoAfterBattleText
db "@"
BrunoDontRunAwayText:
TX_FAR _BrunoDontRunAwayText
db "@"