rlm@240: ******** Game Sequence rlm@240: rlm@239: start game rlm@239: rlm@240: name rival "GG" rlm@240: (0x7F 0xE1 0x86 0xE1 0x86 0xE1 in character codes) rlm@240: rlm@290: get pikachu, fight rival, deliver oak's parcel, go back to rlm@290: viridian poke mart. rlm@239: rlm@290: Perform save corruption. rlm@239: rlm@290: switch 6th pokemon with 9th to set current-items to 0xFF rlm@239: rlm@290: Sell 254 cancel-buttons to get a bunch of money. rlm@239: rlm@290: buy a pokeball to repair item-list rlm@290: rlm@290: buy 1 pokeball, 1 potion, 1 antidote, 1 parlyz heal, and rlm@290: 96 burn heals rlm@290: rlm@290: 95 burn heals spells out the address that will safely return rlm@290: control to the pokemon kernel. rlm@290: rlm@290: switch 5th pokemon with 9th to set current-items to 0xFF, rlm@290: corrupting the item-list again. rlm@290: rlm@290: Deposit things from your item list to get the following rlm@290: pattern in the item computer. You can do this with what is rlm@290: in your item list because of the previous setup. rlm@239: rlm@241: [repeat following 35 times] rlm@290: 0xFF rlm@241: 0x01 rlm@290: [end repeat] rlm@240: rlm@240: 0x00 rlm@241: 0xFA -- first part of "Load A from Literal address" rlm@240: rlm@240: third rival's name character rlm@241: xD5 -- target item address rlm@240: rlm@240: 0x00 rlm@241: 0x3C -- increment A register rlm@240: rlm@240: 0x00 rlm@241: 0xEA -- first part of "Save A to literal address" rlm@240: rlm@240: fifth rival's name character rlm@241: xD5 -- target item address rlm@240: rlm@240: 0x00 rlm@241: 0xC3 -- first part of "Absolute Jump to literal address" rlm@240: rlm@240: burn-heal rlm@241: x 95 -- address of Route 3 memory-function rlm@240: rlm@241: 0x00 rlm@241: 0x?? rlm@240: rlm@290: Drop enough from rival's first character/ second character rlm@290: as an item so that it is [0x7F 0xD5] instead of [0x7F 0xE1]. rlm@290: rlm@240: shift rival's name's first two characters into rlm@290: mem-function-address. rlm@240: rlm@240: now close the menu and continue item manipulations using the rlm@240: newly constructed program. Starting and then canceling the rlm@240: start menu activates the program. rlm@240: rlm@240: ********** END Game Sequence rlm@240: rlm@240: rlm@240: rlm@240: rlm@293: [repeat 35 times] rlm@293: 0xFF rlm@293: 0x01 rlm@293: [end repeat] rlm@293: rlm@293: rlm@293: ;;; program to swap item ID and quantity at fixed address. rlm@293: ;; here target is equal to rival's thrid and fourth character rlm@293: rlm@293: rlm@293: 0x00 rlm@293: 0x21 ;; load target into HL rlm@293: rlm@293: third rival's name character rlm@295: xD5 -- target item address rlm@293: rlm@293: 0x00 rlm@293: 0x2A ;; save (HL)=(target) to A, increment HL rlm@293: rlm@293: 0x00 rlm@295: 0x47 ;; save A to B rlm@293: rlm@293: 0x00 rlm@293: 0x3A ;; save (target+1) to A, decrement HL rlm@293: rlm@293: 0x00 rlm@293: 0x22 ;; save A to target, increment HL [(target+1) -> target] rlm@293: rlm@293: 0x00 rlm@295: 0x70 ;; load B into target+1 [(target) -> target+1] rlm@293: rlm@293: rlm@293: rlm@240: rlm@240: rlm@240: rlm@240: rlm@240: rlm@240: valid start addresses for the initial bootstrap program are rlm@240: the following: rlm@240: rlm@240: 0xD31D - 0xD41B rlm@240: --OR-- rlm@240: 0xD53A - 0XD59C rlm@297: rlm@297: rlm@297: rlm@297: valid character-items: rlm@297: rlm@297: 0x7F " " ;space [x] rlm@297: 0x80 "A" ; [x] rlm@297: 0x81 "B" ; [x] rlm@297: 0x82 "C" ; [x] rlm@297: 0x83 "D" ; [x] rlm@297: 0x84 "E" ; [x] rlm@297: 0x85 "F" ; [x] rlm@297: 0x86 "G" ; [x] rlm@297: 0x87 "H" ; [x] rlm@297: 0x88 "I" ; [x] rlm@297: 0x89 "J" ; [x] rlm@297: 0x8A "K" ; [x] rlm@297: 0x8B "L" ; [good] rlm@297: 0x8C "M" ; [x] rlm@297: 0x8D "N" ; [x] rlm@297: --- last valid character for program start rlm@297: 0x8E "O" ; [ ] rlm@297: 0x8F "P" ; [ ] rlm@297: 0x90 "Q" ; [ ] rlm@297: 0x91 "R" ; [ ] rlm@297: 0x92 "S" ; [ ] rlm@297: 0x93 "T" ; [ ] rlm@297: 0x94 "U" ; [ ] rlm@297: 0x95 "V" ; [ ] rlm@297: 0x96 "W" ; [ ] rlm@297: 0x97 "X" ; [ ] rlm@297: 0x98 "Y" ; [ ] rlm@297: 0x99 "Z" ; [ ] rlm@297: 0x9A "(" ; [ ] rlm@297: 0x9B ")" ; [ ] rlm@297: 0x9C ":" ; [ ] rlm@297: --- last valid character for target