view clojure/com/aurellem/exp/notes.txt @ 298:95afeea88c3a

found a second good character-item that can serve as a target
author Robert McIntyre <rlm@mit.edu>
date Fri, 30 Mar 2012 22:41:25 -0500
parents 528dc923d4c5
children eb8d1d7941ec
line wrap: on
line source
1 ******** Game Sequence
3 start game
5 name rival "<space><PK>G<PK>G<PK>"
6 (0x7F 0xE1 0x86 0xE1 0x86 0xE1 in character codes)
8 get pikachu, fight rival, deliver oak's parcel, go back to
9 viridian poke mart.
11 Perform save corruption.
13 switch 6th pokemon with 9th to set current-items to 0xFF
15 Sell 254 cancel-buttons to get a bunch of money.
17 buy a pokeball to repair item-list
19 buy 1 pokeball, 1 potion, 1 antidote, 1 parlyz heal, and
20 96 burn heals
22 95 burn heals spells out the address that will safely return
23 control to the pokemon kernel.
25 switch 5th pokemon with 9th to set current-items to 0xFF,
26 corrupting the item-list again.
28 Deposit things from your item list to get the following
29 pattern in the item computer. You can do this with what is
30 in your item list because of the previous setup.
32 [repeat following 35 times]
33 0xFF
34 0x01
35 [end repeat]
37 0x00
38 0xFA -- first part of "Load A from Literal address"
40 third rival's name character
41 xD5 -- target item address
43 0x00
44 0x3C -- increment A register
46 0x00
47 0xEA -- first part of "Save A to literal address"
49 fifth rival's name character
50 xD5 -- target item address
52 0x00
53 0xC3 -- first part of "Absolute Jump to literal address"
55 burn-heal
56 x 95 -- address of Route 3 memory-function
58 0x00
59 0x??
61 Drop enough from rival's first character/ second character
62 as an item so that it is [0x7F 0xD5] instead of [0x7F 0xE1].
64 shift rival's name's first two characters into
65 mem-function-address.
67 now close the menu and continue item manipulations using the
68 newly constructed program. Starting and then canceling the
69 start menu activates the program.
71 ********** END Game Sequence
76 [repeat 35 times]
77 0xFF
78 0x01
79 [end repeat]
82 ;;; program to swap item ID and quantity at fixed address.
83 ;; here target is equal to rival's thrid and fourth character
86 0x00
87 0x21 ;; load target into HL
89 third rival's name character
90 xD5 -- target item address
92 0x00
93 0x2A ;; save (HL)=(target) to A, increment HL
95 0x00
96 0x47 ;; save A to B
98 0x00
99 0x3A ;; save (target+1) to A, decrement HL
101 0x00
102 0x22 ;; save A to target, increment HL [(target+1) -> target]
104 0x00
105 0x70 ;; load B into target+1 [(target) -> target+1]
114 valid start addresses for the initial bootstrap program are
115 the following:
117 0xD31D - 0xD41B
118 --OR--
119 0xD53A - 0XD59C
123 valid character-items:
125 0x7F " " ;space [x]
126 0x80 "A" ; [x]
127 0x81 "B" ; [x]
128 0x82 "C" ; [x]
129 0x83 "D" ; [x]
130 0x84 "E" ; [x]
131 0x85 "F" ; [x]
132 0x86 "G" ; [x]
133 0x87 "H" ; [x]
134 0x88 "I" ; [x]
135 0x89 "J" ; [x]
136 0x8A "K" ; [x]
137 0x8B "L" ; [good]
138 0x8C "M" ; [x]
139 0x8D "N" ; [x]
140 --- last valid character for program start
141 0x8E "O" ; [x]
142 0x8F "P" ; [x]
143 0x90 "Q" ; [x]
144 0x91 "R" ; [x]
145 0x92 "S" ; [x]
146 0x93 "T" ; [good]
147 0x94 "U" ; [ ]
148 0x95 "V" ; [ ]
149 0x96 "W" ; [ ]
150 0x97 "X" ; [ ]
151 0x98 "Y" ; [ ]
152 0x99 "Z" ; [ ]
153 0x9A "(" ; [ ]
154 0x9B ")" ; [ ]
155 0x9C ":" ; [ ]
156 --- last valid character for target