view clojure/com/aurellem/exp/notes.txt @ 407:03ade2a04458

Astoundingly, it is not generally possible to convert decimal representations into hexadecimal simply by prepending 0x.
author Dylan Holmes <ocsenave@gmail.com>
date Thu, 12 Apr 2012 22:30:03 -0500
parents 5c2041d1cdda
children
line wrap: on
line source
1 ******** Game Sequence
3 start game
5 name rival "L<PK>U<PK><PK><any-character>"
6 (0x8B 0xE1 0x95 0xE1 0xE1 0x<any> 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 potion, 1 antidote, 1 parlyz heal, 2 pokeballs, 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 the following 25 times]
33 0xFF
34 0x01
35 [end repeat]
37 ;; Second part of program to swap item ID and quantity at
38 ;; fixed address.
40 0x00 ;; decrement HL
41 0x2B
43 0x00 ;; this starts at address 0xD56C
44 0x2A ;; save (HL)=(target) to A, increment HL
46 0x00
47 0x47 ;; save A to B
49 0x00
50 0x3A ;; save (target+1) to A, decrement HL
52 0x00
53 0x22 ;; save A to target, increment HL [(target+1) -> target]
55 0x00
56 0x70 ;; load B into target+1 [(target) -> target+1]
58 0x00
59 0xC3 ;; first part of absolute jump
61 burn-heal (0x0C)
62 x 95 (0x5F) -- address of Route 3 memory-function
64 [repeat the following 4 times]
65 0xFF
66 0x01
67 [end repeat]
69 ;; first part of item manipulation program
71 0x00 ;; this starts at address 0xD58A
72 0x21 ;; load target into HL
74 third rival's name character (U == 0x94)
75 x D5 -- target item address
77 0x00
78 0x18 ;; jump relative
80 fifth rival's name character (PK) (TM25) (0xE1 == -31)
81 x any
83 0xFF
84 0x01
86 target-item type (at 0xD594)
87 target-item quantity (at 0xD595)
91 Drop enough from rival's first character/ third character
92 as an item so that it is [_ 0xD5] instead of [_ 0xE1].
94 shift rival's name's first two characters into
95 mem-function-address.
97 now close the menu and continue item manipulations using the
98 newly constructed program. Starting and then canceling the
99 start menu activates the program.
101 ********** END Game Sequence
108 ************ Misc Notes.
110 valid start addresses for the initial bootstrap program are
111 the following:
113 0xD31D - 0xD41B
114 --OR--
115 0xD53A - 0XD59C
119 valid character-items:
121 0x7F " " ;space [x]
122 0x80 "A" ; [x]
123 0x81 "B" ; [x]
124 0x82 "C" ; [x]
125 0x83 "D" ; [x]
126 0x84 "E" ; [x]
127 0x85 "F" ; [x]
128 0x86 "G" ; [x]
129 0x87 "H" ; [x]
130 0x88 "I" ; [x]
131 0x89 "J" ; [x]
132 0x8A "K" ; [x]
133 0x8B "L" ; [good]
134 0x8C "M" ; [x]
135 0x8D "N" ; [x]
136 --- last valid character for program start
137 0x8E "O" ; [x]
138 0x8F "P" ; [x]
139 0x90 "Q" ; [x]
140 0x91 "R" ; [x]
141 0x92 "S" ; [x]
142 0x93 "T" ; [good]
143 0x94 "U" ; [good] [key :(]
144 0x95 "V" ; [good]
145 0x96 "W" ; [x]
146 0x97 "X" ; [x]
147 0x98 "Y" ; [key]
148 0x99 "Z" ; [x]
149 0x9A "(" ; [key]
150 0x9B ")" ; [x]
151 0x9C ":" ; [x]
152 --- last valid character for target
156 ;;; character canadates for jump-relative backwards
158 0xE1 "PK" ; [TM25]
159 0xE2 "MN" ; [TM26]
160 0xE6 "?" ; [TM30]
161 0xE7 "!" ; [TM31]
162 0xE8 "." ; [TM32]