rlm@240
|
1 ******** Game Sequence
|
rlm@240
|
2
|
rlm@239
|
3 start game
|
rlm@239
|
4
|
rlm@302
|
5 name rival "L<PK>U<PK><PK><any-character>"
|
rlm@332
|
6 (0x8B 0xE1 0x95 0xE1 0xE1 0x<any> in character codes)
|
rlm@240
|
7
|
rlm@290
|
8 get pikachu, fight rival, deliver oak's parcel, go back to
|
rlm@290
|
9 viridian poke mart.
|
rlm@239
|
10
|
rlm@290
|
11 Perform save corruption.
|
rlm@239
|
12
|
rlm@290
|
13 switch 6th pokemon with 9th to set current-items to 0xFF
|
rlm@239
|
14
|
rlm@290
|
15 Sell 254 cancel-buttons to get a bunch of money.
|
rlm@239
|
16
|
rlm@290
|
17 buy a pokeball to repair item-list
|
rlm@290
|
18
|
rlm@300
|
19 buy 1 potion, 1 antidote, 1 parlyz heal, 2 pokeballs, and
|
rlm@290
|
20 96 burn heals
|
rlm@290
|
21
|
rlm@290
|
22 95 burn heals spells out the address that will safely return
|
rlm@290
|
23 control to the pokemon kernel.
|
rlm@290
|
24
|
rlm@290
|
25 switch 5th pokemon with 9th to set current-items to 0xFF,
|
rlm@290
|
26 corrupting the item-list again.
|
rlm@290
|
27
|
rlm@290
|
28 Deposit things from your item list to get the following
|
rlm@290
|
29 pattern in the item computer. You can do this with what is
|
rlm@290
|
30 in your item list because of the previous setup.
|
rlm@239
|
31
|
rlm@302
|
32 [repeat the following 25 times]
|
rlm@290
|
33 0xFF
|
rlm@241
|
34 0x01
|
rlm@290
|
35 [end repeat]
|
rlm@240
|
36
|
rlm@301
|
37 ;; Second part of program to swap item ID and quantity at
|
rlm@301
|
38 ;; fixed address.
|
rlm@293
|
39
|
rlm@332
|
40 0x00 ;; decrement HL
|
rlm@332
|
41 0x2B
|
rlm@332
|
42
|
rlm@301
|
43 0x00 ;; this starts at address 0xD56C
|
rlm@293
|
44 0x2A ;; save (HL)=(target) to A, increment HL
|
rlm@293
|
45
|
rlm@293
|
46 0x00
|
rlm@295
|
47 0x47 ;; save A to B
|
rlm@293
|
48
|
rlm@293
|
49 0x00
|
rlm@293
|
50 0x3A ;; save (target+1) to A, decrement HL
|
rlm@293
|
51
|
rlm@293
|
52 0x00
|
rlm@293
|
53 0x22 ;; save A to target, increment HL [(target+1) -> target]
|
rlm@301
|
54
|
rlm@293
|
55 0x00
|
rlm@295
|
56 0x70 ;; load B into target+1 [(target) -> target+1]
|
rlm@293
|
57
|
rlm@300
|
58 0x00
|
rlm@303
|
59 0xC3 ;; first part of absolute jump
|
rlm@293
|
60
|
rlm@302
|
61 burn-heal (0x0C)
|
rlm@302
|
62 x 95 (0x5F) -- address of Route 3 memory-function
|
rlm@293
|
63
|
rlm@332
|
64 [repeat the following 4 times]
|
rlm@301
|
65 0xFF
|
rlm@301
|
66 0x01
|
rlm@301
|
67 [end repeat]
|
rlm@240
|
68
|
rlm@303
|
69 ;; first part of item manipulation program
|
rlm@303
|
70
|
rlm@302
|
71 0x00 ;; this starts at address 0xD58A
|
rlm@301
|
72 0x21 ;; load target into HL
|
rlm@301
|
73
|
rlm@302
|
74 third rival's name character (U == 0x94)
|
rlm@301
|
75 x D5 -- target item address
|
rlm@301
|
76
|
rlm@301
|
77 0x00
|
rlm@301
|
78 0x18 ;; jump relative
|
rlm@301
|
79
|
rlm@301
|
80 fifth rival's name character (PK) (TM25) (0xE1 == -31)
|
rlm@301
|
81 x any
|
rlm@301
|
82
|
rlm@302
|
83 0xFF
|
rlm@302
|
84 0x01
|
rlm@302
|
85
|
rlm@302
|
86 target-item type (at 0xD594)
|
rlm@302
|
87 target-item quantity (at 0xD595)
|
rlm@301
|
88
|
rlm@301
|
89
|
rlm@301
|
90
|
rlm@301
|
91 Drop enough from rival's first character/ third character
|
rlm@300
|
92 as an item so that it is [_ 0xD5] instead of [_ 0xE1].
|
rlm@240
|
93
|
rlm@300
|
94 shift rival's name's first two characters into
|
rlm@300
|
95 mem-function-address.
|
rlm@240
|
96
|
rlm@300
|
97 now close the menu and continue item manipulations using the
|
rlm@300
|
98 newly constructed program. Starting and then canceling the
|
rlm@300
|
99 start menu activates the program.
|
rlm@240
|
100
|
rlm@300
|
101 ********** END Game Sequence
|
rlm@300
|
102
|
rlm@300
|
103
|
rlm@300
|
104
|
rlm@300
|
105
|
rlm@300
|
106
|
rlm@300
|
107
|
rlm@300
|
108 ************ Misc Notes.
|
rlm@240
|
109
|
rlm@240
|
110 valid start addresses for the initial bootstrap program are
|
rlm@240
|
111 the following:
|
rlm@240
|
112
|
rlm@240
|
113 0xD31D - 0xD41B
|
rlm@240
|
114 --OR--
|
rlm@240
|
115 0xD53A - 0XD59C
|
rlm@297
|
116
|
rlm@297
|
117
|
rlm@297
|
118
|
rlm@297
|
119 valid character-items:
|
rlm@297
|
120
|
rlm@297
|
121 0x7F " " ;space [x]
|
rlm@297
|
122 0x80 "A" ; [x]
|
rlm@297
|
123 0x81 "B" ; [x]
|
rlm@297
|
124 0x82 "C" ; [x]
|
rlm@297
|
125 0x83 "D" ; [x]
|
rlm@297
|
126 0x84 "E" ; [x]
|
rlm@297
|
127 0x85 "F" ; [x]
|
rlm@297
|
128 0x86 "G" ; [x]
|
rlm@297
|
129 0x87 "H" ; [x]
|
rlm@297
|
130 0x88 "I" ; [x]
|
rlm@297
|
131 0x89 "J" ; [x]
|
rlm@297
|
132 0x8A "K" ; [x]
|
rlm@297
|
133 0x8B "L" ; [good]
|
rlm@297
|
134 0x8C "M" ; [x]
|
rlm@297
|
135 0x8D "N" ; [x]
|
rlm@297
|
136 --- last valid character for program start
|
rlm@298
|
137 0x8E "O" ; [x]
|
rlm@298
|
138 0x8F "P" ; [x]
|
rlm@298
|
139 0x90 "Q" ; [x]
|
rlm@298
|
140 0x91 "R" ; [x]
|
rlm@298
|
141 0x92 "S" ; [x]
|
rlm@298
|
142 0x93 "T" ; [good]
|
rlm@332
|
143 0x94 "U" ; [good] [key :(]
|
rlm@299
|
144 0x95 "V" ; [good]
|
rlm@299
|
145 0x96 "W" ; [x]
|
rlm@299
|
146 0x97 "X" ; [x]
|
rlm@299
|
147 0x98 "Y" ; [key]
|
rlm@299
|
148 0x99 "Z" ; [x]
|
rlm@299
|
149 0x9A "(" ; [key]
|
rlm@299
|
150 0x9B ")" ; [x]
|
rlm@299
|
151 0x9C ":" ; [x]
|
rlm@297
|
152 --- last valid character for target
|
rlm@301
|
153
|
rlm@301
|
154
|
rlm@301
|
155
|
rlm@301
|
156 ;;; character canadates for jump-relative backwards
|
rlm@301
|
157
|
rlm@301
|
158 0xE1 "PK" ; [TM25]
|
rlm@301
|
159 0xE2 "MN" ; [TM26]
|
rlm@301
|
160 0xE6 "?" ; [TM30]
|
rlm@301
|
161 0xE7 "!" ; [TM31]
|
rlm@301
|
162 0xE8 "." ; [TM32]
|