view clojure/com/aurellem/exp/notes.txt @ 302:0b3e89103dc2

going to test bootstrapping program.
author Robert McIntyre <rlm@mit.edu>
date Sat, 31 Mar 2012 00:05:39 -0500
parents 1de6aada1cb7
children 5bcda2d6d135
line wrap: on
line source
1 ******** Game Sequence
3 start game
5 name rival "L<PK>U<PK><PK><any-character>"
6 (0x8B 0xE1 0x94 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 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 ;; this starts at address 0xD56C
41 0x2A ;; save (HL)=(target) to A, increment HL
43 0x00
44 0x47 ;; save A to B
46 0x00
47 0x3A ;; save (target+1) to A, decrement HL
49 0x00
50 0x22 ;; save A to target, increment HL [(target+1) -> target]
52 0x00
53 0x70 ;; load B into target+1 [(target) -> target+1]
55 0x00
56 0xC3 ;; first part of absolute jump
58 burn-heal (0x0C)
59 x 95 (0x5F) -- address of Route 3 memory-function
61 [repeat the following 8 times]
62 0xFF
63 0x01
64 [end repeat]
66 0x00 ;; this starts at address 0xD58A
67 0x21 ;; load target into HL
69 third rival's name character (U == 0x94)
70 x D5 -- target item address
72 0x00
73 0x18 ;; jump relative
75 fifth rival's name character (PK) (TM25) (0xE1 == -31)
76 x any
78 0xFF
79 0x01
81 target-item type (at 0xD594)
82 target-item quantity (at 0xD595)
86 Drop enough from rival's first character/ third character
87 as an item so that it is [_ 0xD5] instead of [_ 0xE1].
89 shift rival's name's first two characters into
90 mem-function-address.
92 now close the menu and continue item manipulations using the
93 newly constructed program. Starting and then canceling the
94 start menu activates the program.
96 ********** END Game Sequence
103 ************ Misc Notes.
105 valid start addresses for the initial bootstrap program are
106 the following:
108 0xD31D - 0xD41B
109 --OR--
110 0xD53A - 0XD59C
114 valid character-items:
116 0x7F " " ;space [x]
117 0x80 "A" ; [x]
118 0x81 "B" ; [x]
119 0x82 "C" ; [x]
120 0x83 "D" ; [x]
121 0x84 "E" ; [x]
122 0x85 "F" ; [x]
123 0x86 "G" ; [x]
124 0x87 "H" ; [x]
125 0x88 "I" ; [x]
126 0x89 "J" ; [x]
127 0x8A "K" ; [x]
128 0x8B "L" ; [good]
129 0x8C "M" ; [x]
130 0x8D "N" ; [x]
131 --- last valid character for program start
132 0x8E "O" ; [x]
133 0x8F "P" ; [x]
134 0x90 "Q" ; [x]
135 0x91 "R" ; [x]
136 0x92 "S" ; [x]
137 0x93 "T" ; [good]
138 0x94 "U" ; [good]
139 0x95 "V" ; [good]
140 0x96 "W" ; [x]
141 0x97 "X" ; [x]
142 0x98 "Y" ; [key]
143 0x99 "Z" ; [x]
144 0x9A "(" ; [key]
145 0x9B ")" ; [x]
146 0x9C ":" ; [x]
147 --- last valid character for target
151 ;;; character canadates for jump-relative backwards
153 0xE1 "PK" ; [TM25]
154 0xE2 "MN" ; [TM26]
155 0xE6 "?" ; [TM30]
156 0xE7 "!" ; [TM31]
157 0xE8 "." ; [TM32]