-
Notifications
You must be signed in to change notification settings - Fork 1k
/
debug_menu.asm
120 lines (98 loc) · 2.14 KB
/
debug_menu.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
DebugMenu:
IF DEF(_DEBUG)
call ClearScreen
; These debug names are used for TestBattle.
; StartNewGameDebug uses the debug names from PrepareOakSpeech.
ld hl, DebugBattlePlayerName
ld de, wPlayerName
ld bc, NAME_LENGTH
call CopyData
ld hl, DebugBattleRivalName
ld de, wRivalName
ld bc, NAME_LENGTH
call CopyData
call LoadFontTilePatterns
call LoadHpBarAndStatusTilePatterns
call ClearSprites
call RunDefaultPaletteCommand
hlcoord 5, 6
ld b, 3
ld c, 9
call TextBoxBorder
hlcoord 7, 7
ld de, DebugMenuOptions
call PlaceString
ld a, TEXT_DELAY_MEDIUM
ld [wOptions], a
ld a, A_BUTTON | B_BUTTON | START
ld [wMenuWatchedKeys], a
xor a
ld [wMenuJoypadPollCount], a
inc a
ld [wMaxMenuItem], a
ld a, 7
ld [wTopMenuItemY], a
dec a
ld [wTopMenuItemX], a
xor a
ld [wCurrentMenuItem], a
ld [wLastMenuItem], a
ld [wMenuWatchMovingOutOfBounds], a
call HandleMenuInput
bit BIT_B_BUTTON, a
jp nz, DisplayTitleScreen
ld a, [wCurrentMenuItem]
and a ; FIGHT?
jp z, TestBattle
; DEBUG
ld hl, wStatusFlags6
set BIT_DEBUG_MODE, [hl]
jp StartNewGameDebug
DebugBattlePlayerName:
db "Tom@"
DebugBattleRivalName:
db "Juerry@"
DebugMenuOptions:
db "FIGHT"
next "DEBUG@"
ELSE
ret
ENDC
TestBattle: ; unreferenced except in _DEBUG
.loop
call GBPalNormal
; Don't mess around with obedience.
ld a, 1 << BIT_EARTHBADGE
ld [wObtainedBadges], a
ld hl, wStatusFlags7
set BIT_TEST_BATTLE, [hl]
; wNumBagItems and wBagItems are not initialized here,
; and their garbage values happen to act as if EXP_ALL
; is in the bag at the end of the test battle.
; pokeyellow fixes this by initializing them with a
; list of items.
; Reset the party.
ld hl, wPartyCount
xor a
ld [hli], a
dec a
ld [hl], a
; Give the player a level 20 Rhydon.
ld a, RHYDON
ld [wCurPartySpecies], a
ld a, 20
ld [wCurEnemyLevel], a
xor a
ld [wMonDataLocation], a
ld [wCurMap], a
call AddPartyMon
; Fight against a level 20 Rhydon.
ld a, RHYDON
ld [wCurOpponent], a
predef InitOpponent
; When the battle ends, do it all again.
; There are some graphical quirks in SGB mode.
ld a, 1
ld [wUpdateSpritesEnabled], a
ldh [hAutoBGTransferEnabled], a
jr .loop