rlm@240
|
1 ******** Game Sequence
|
rlm@240
|
2
|
rlm@239
|
3 start game
|
rlm@239
|
4
|
rlm@240
|
5 name rival "<space><PK>G<PK>G<PK>"
|
rlm@240
|
6 (0x7F 0xE1 0x86 0xE1 0x86 0xE1 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@290
|
19 buy 1 pokeball, 1 potion, 1 antidote, 1 parlyz heal, 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@241
|
32 [repeat following 35 times]
|
rlm@290
|
33 0xFF
|
rlm@241
|
34 0x01
|
rlm@290
|
35 [end repeat]
|
rlm@240
|
36
|
rlm@240
|
37 0x00
|
rlm@241
|
38 0xFA -- first part of "Load A from Literal address"
|
rlm@240
|
39
|
rlm@240
|
40 third rival's name character
|
rlm@241
|
41 xD5 -- target item address
|
rlm@240
|
42
|
rlm@240
|
43 0x00
|
rlm@241
|
44 0x3C -- increment A register
|
rlm@240
|
45
|
rlm@240
|
46 0x00
|
rlm@241
|
47 0xEA -- first part of "Save A to literal address"
|
rlm@240
|
48
|
rlm@240
|
49 fifth rival's name character
|
rlm@241
|
50 xD5 -- target item address
|
rlm@240
|
51
|
rlm@240
|
52 0x00
|
rlm@241
|
53 0xC3 -- first part of "Absolute Jump to literal address"
|
rlm@240
|
54
|
rlm@240
|
55 burn-heal
|
rlm@241
|
56 x 95 -- address of Route 3 memory-function
|
rlm@240
|
57
|
rlm@241
|
58 0x00
|
rlm@241
|
59 0x??
|
rlm@240
|
60
|
rlm@290
|
61 Drop enough from rival's first character/ second character
|
rlm@290
|
62 as an item so that it is [0x7F 0xD5] instead of [0x7F 0xE1].
|
rlm@290
|
63
|
rlm@240
|
64 shift rival's name's first two characters into
|
rlm@290
|
65 mem-function-address.
|
rlm@240
|
66
|
rlm@240
|
67 now close the menu and continue item manipulations using the
|
rlm@240
|
68 newly constructed program. Starting and then canceling the
|
rlm@240
|
69 start menu activates the program.
|
rlm@240
|
70
|
rlm@240
|
71 ********** END Game Sequence
|
rlm@240
|
72
|
rlm@240
|
73
|
rlm@240
|
74
|
rlm@240
|
75
|
rlm@293
|
76 [repeat 35 times]
|
rlm@293
|
77 0xFF
|
rlm@293
|
78 0x01
|
rlm@293
|
79 [end repeat]
|
rlm@293
|
80
|
rlm@293
|
81
|
rlm@293
|
82 ;;; program to swap item ID and quantity at fixed address.
|
rlm@293
|
83 ;; here target is equal to rival's thrid and fourth character
|
rlm@293
|
84
|
rlm@293
|
85
|
rlm@293
|
86 0x00
|
rlm@293
|
87 0x21 ;; load target into HL
|
rlm@293
|
88
|
rlm@293
|
89 third rival's name character
|
rlm@293
|
90 xD5 -- target item address
|
rlm@293
|
91
|
rlm@293
|
92 0x00
|
rlm@293
|
93 0x2A ;; save (HL)=(target) to A, increment HL
|
rlm@293
|
94
|
rlm@293
|
95 0x00
|
rlm@293
|
96 0x78 ;; save A to B
|
rlm@293
|
97
|
rlm@293
|
98 0x00
|
rlm@293
|
99 0x3A ;; save (target+1) to A, decrement HL
|
rlm@293
|
100
|
rlm@293
|
101 0x00
|
rlm@293
|
102 0x22 ;; save A to target, increment HL [(target+1) -> target]
|
rlm@293
|
103
|
rlm@293
|
104 0x00
|
rlm@293
|
105 0x78 ;; load B to A
|
rlm@293
|
106
|
rlm@293
|
107 0x00
|
rlm@293
|
108 0x77 ;; load A into target+1 [(target) -> target+1]
|
rlm@293
|
109
|
rlm@293
|
110
|
rlm@293
|
111
|
rlm@240
|
112
|
rlm@240
|
113
|
rlm@240
|
114
|
rlm@240
|
115
|
rlm@240
|
116
|
rlm@240
|
117 valid start addresses for the initial bootstrap program are
|
rlm@240
|
118 the following:
|
rlm@240
|
119
|
rlm@240
|
120 0xD31D - 0xD41B
|
rlm@240
|
121 --OR--
|
rlm@240
|
122 0xD53A - 0XD59C
|