You are not logged in.
Pages: 1
I've put this as reference in this location that could be reached quickly by newbies without searching in the disassembly project.
This will be handy also when I'll post my Item Hacking tutorial here in this section.
This is the list of items in Red\Blue\Yellow (and Green) sort by his index number:
MASTER BALL $01
ULTRA BALL $02
GREAT BALL $03
POKE BALL $04
TOWN MAP $05
BICYCLE $06
SURFBOARD $07 ; Unused and glitchy, it corrupts the Hall Of Fame data.
SAFARI BALL $08
POKEDEX $09
MOON STONE $0A
ANTIDOTE $0B
BURN HEAL $0C
ICE HEAL $0D
AWAKENING $0E
PARLYZ HEAL $0F
FULL RESTORE $10
MAX POTION $11
HYPER POTION $12
SUPER POTION $13
POTION $14
BOULDERBADGE $15 ; unused, used only for Badge List in Cerulean House.
CASCADEBADGE $16 ; unused, used only for Badge List in Cerulean House.
THUNDERBADGE $17 ; unused, used only for Badge List in Cerulean House.
RAINBOWBADGE $18 ; unused, used only for Badge List in Cerulean House.
SOULBADGE $19 ; unused, used only for Badge List in Cerulean House.
MARSHBADGE $1A ; unused, used only for Badge List in Cerulean House.
VOLCANOBADGE $1B ; unused, used only for Badge List in Cerulean House.
EARTHBADGE $1C ; unused, used only for Badge List in Cerulean House.
ESCAPE ROPE $1D
REPEL $1E
OLD AMBER $1F
FIRE STONE $20
THUNDER STONE $21
WATER STONE $22
HP UP $23
PROTEIN $24
IRON $25
CARBOS $26
CALCIUM $27
RARE CANDY $28
DOME FOSSIL $29
HELIX FOSSIL $2A
SECRET KEY $2B
;????? $2C ; Supposed to be a Key Item then removed.
BIKE VOUCHER $2D
X ACCURACY $2E
LEAF STONE $2F
CARD KEY $30
NUGGET $31
;FAKE PP UP $32 ; It has no use.
POKE DOLL $33
FULL HEAL $34
REVIVE $35
MAX REVIVE $36
GUARD SPEC $37
SUPER REPEL $38
MAX REPEL $39
DIRE HIT $3A
COIN $3B ; It has no use, replaced by Casino Coins in Coin Case.
FRESH WATER $3C
SODA POP $3D
LEMONADE $3E
S S TICKET $3F
GOLD TEETH $40
X ATTACK $41
X DEFEND $42
X SPEED $43
X SPECIAL $44
COIN CASE $45
OAKS PARCEL $46
ITEMFINDER $47
SILPH SCOPE $48
POKE FLUTE $49
LIFT KEY $4A
EXP ALL $4B
OLD ROD $4C
GOOD ROD $4D
SUPER ROD $4E
PP UP $4F
ETHER $50
MAX ETHER $51
ELIXER $52
MAX ELIXER $53
; After $53 There are glitchy items used only for the Elevators
; such as 1F, 8F, etc.
; Most of those items are glitchy and corrupts the game.
;
;---------
;
; HM\TM Items List.
;Begins with HM 01 with index number $C4.
;
HM 01 $C4
HM 02 $C5
HM 03 $C6
HM 04 $C7
HM 05 $C8
TM 01 $C9
TM 02 $CA
TM 03 $CB
TM 04 $CC
TM 05 $CD
TM 06 $CE
TM 07 $CF
TM 08 $D0
TM 09 $D1
TM 10 $D2
TM 11 $D3
TM 12 $D4
TM 13 $D5
TM 14 $D6
TM 15 $D7
TM 16 $D8
TM 17 $D9
TM 18 $DA
TM 19 $DB
TM 20 $DC
TM 21 $DD
TM 22 $DE
TM 23 $DF
TM 24 $E0
TM 25 $E1
TM 26 $E2
TM 27 $E3
TM 28 $E4
TM 29 $E5
TM 30 $E6
TM 31 $E7
TM 32 $E8
TM 33 $E9
TM 34 $EA
TM 35 $EB
TM 36 $EC
TM 37 $ED
TM 38 $EE
TM 39 $EF
TM 40 $F0
TM 41 $F1
TM 42 $F2
TM 43 $F3
TM 44 $F4
TM 45 $F5
TM 46 $F6
TM 47 $F7
TM 48 $F8
TM 49 $F9
TM 50 $FA
;
;end of Item Data.
I left this forum.
Offline
Well, here's this new Hacking Tutorial made by me and meant for newbie hackers which wish to hack the R\B Item Datas with HexEditing since there are no Programs (or at least, not known yet) for Generation 1 that are able to do so much changes.
In R\B (and also Y & G) Item data are split in 3 parts: Item Names, Item Use and Item Prices.
Here is everything that you need:
*0: (ESSENTIAL): Your ROM, a decent Hex Editor and a decent brain;
*1: The reference of the Item List by Index Number: http://hax.iimarck.us/topic/3934/
*2: A lot of time;
*3: A lot of patience;
*4: A lot of Ginger Soda to contrast de-hydratation as consequence of hacking;
*5: Follow the following 3 (or 4) steps accurately:
-------------
STEP 01: HACK ITEM NAMES
The table that contains Item Names it's located at 0x472B (01:472B).
If you want use a larger name you'll have to move the names after that a few bytes after and then insert the new name replacing an old one.
Keep in mind that the max allowed number of characters for an item name is 12.
Don't forget also that if you have too much space you'll have to repoint the table.
In that case, pointers are located at:
*0x39CB
*0x39c14
This was taken from the disassembly project:
ItemNames: ; 472b (1:472b)
db "MASTER BALL@"
db "ULTRA BALL@"
db "GREAT BALL@"
db "POKé BALL@"
db "TOWN MAP@"
db "BICYCLE@"
db "?????@"
db "SAFARI BALL@"
db "POKéDEX@"
db "MOON STONE@"
db "ANTIDOTE@"
db "BURN HEAL@"
db "ICE HEAL@"
db "AWAKENING@"
db "PARLYZ HEAL@"
db "FULL RESTORE@"
db "MAX POTION@"
db "HYPER POTION@"
db "SUPER POTION@"
db "POTION@"
db "BOULDERBADGE@"
db "CASCADEBADGE@"
db "THUNDERBADGE@"
db "RAINBOWBADGE@"
db "SOULBADGE@"
db "MARSHBADGE@"
db "VOLCANOBADGE@"
db "EARTHBADGE@"
db "ESCAPE ROPE@"
db "REPEL@"
db "OLD AMBER@"
db "FIRE STONE@"
db "THUNDERSTONE@"
db "WATER STONE@"
db "HP UP@"
db "PROTEIN@"
db "IRON@"
db "CARBOS@"
db "CALCIUM@"
db "RARE CANDY@"
db "DOME FOSSIL@"
db "HELIX FOSSIL@"
db "SECRET KEY@"
db "?????@"
db "BIKE VOUCHER@"
db "X ACCURACY@"
db "LEAF STONE@"
db "CARD KEY@"
db "NUGGET@"
db "PP UP@"
db "POKé DOLL@"
db "FULL HEAL@"
db "REVIVE@"
db "MAX REVIVE@"
db "GUARD SPEC.@"
db "SUPER REPEL@"
db "MAX REPEL@"
db "DIRE HIT@"
db "COIN@"
db "FRESH WATER@"
db "SODA POP@"
db "LEMONADE@"
db "S.S.TICKET@"
db "GOLD TEETH@"
db "X ATTACK@"
db "X DEFEND@"
db "X SPEED@"
db "X SPECIAL@"
db "COIN CASE@"
db "OAK's PARCEL@"
db "ITEMFINDER@"
db "SILPH SCOPE@"
db "POKé FLUTE@"
db "LIFT KEY@"
db "EXP.ALL@"
db "OLD ROD@"
db "GOOD ROD@"
db "SUPER ROD@"
db "PP UP@"
db "ETHER@"
db "MAX ETHER@"
db "ELIXER@"
db "MAX ELIXER@"
db "B2F@"
db "B1F@"
db "1F@"
db "2F@"
db "3F@"
db "4F@"
db "5F@"
db "6F@"
db "7F@"
db "8F@"
db "9F@"
db "10F@"
db "11F@"
db "B4F@"
UnusedNames: ; 4a92 (1:4a92)
The unused Names are in garbled format and I actually don't know if those are used in other versions of the game or not such as the Japanese one.
-------------
STEP 02: HACK ITEM PRICE
There are already programs for changing item prices, but what programs don't do yet is change those information even if tose were repointed XP.
Actually you could repoint the table so, in case you need new prices for items you added, you could add new prices.
If you want repoint this stuff, keep in mind that pointers are located at:
*39C2C
The Table itself of Item Prices is originally located at 0x4608 (01:4608).
Each 3 bytes a price is indicated.
example: UltraBall price: $00,$12,$00.
This happens simply because Hexadecimal values in a single byte could cover a range of 00-FF (0 - 255) but prices are often higher than 255.
Anyway, keep attention because in this case the bytes are written in a decimal-like format, so if an item costs "1200" then its bytes will be " 00, 12, 00" so watch out!
-------------
STEP 03: HACK ITEM USE
Now the most important part of data: Item Use Data.
There's a table located at 0xD5E1 (03:55E1) which contains a list of pointers for Item Usage.
Each item has 1 pointer (formed by 2 bytes in little endian order) which points to a particular routine in the same bank.
This means that, if for some reasons you moved one of those previously then you'll have to repoint each item associated to its usage.
This comes from the Disassembly Project:
ItemUsePtrTable: ; d5e1 (3:55e1)
dw ItemUseBall ; MASTER_BALL
dw ItemUseBall ; ULTRA_BALL
dw ItemUseBall ; GREAT_BALL
dw ItemUseBall ; POKE_BALL
dw ItemUseTownMap ; TOWN_MAP
dw ItemUseBicycle ; BICYCLE
dw ItemUseSurfboard ; out-of-battle Surf effect
dw ItemUseBall ; SAFARI_BALL
dw ItemUsePokedex ; POKEDEX
dw ItemUseEvoStone ; MOON_STONE
dw ItemUseMedicine ; ANTIDOTE
dw ItemUseMedicine ; BURN_HEAL
dw ItemUseMedicine ; ICE_HEAL
dw ItemUseMedicine ; AWAKENING
dw ItemUseMedicine ; PARLYZ_HEAL
dw ItemUseMedicine ; FULL_RESTORE
dw ItemUseMedicine ; MAX_POTION
dw ItemUseMedicine ; HYPER_POTION
dw ItemUseMedicine ; SUPER_POTION
dw ItemUseMedicine ; POTION
dw ItemUseBait ; BOULDERBADGE
dw ItemUseRock ; CASCADEBADGE
dw UnusableItem ; THUNDERBADGE
dw UnusableItem ; RAINBOWBADGE
dw UnusableItem ; SOULBADGE
dw UnusableItem ; MARSHBADGE
dw UnusableItem ; VOLCANOBADGE
dw UnusableItem ; EARTHBADGE
dw ItemUseEscapeRope ; ESCAPE_ROPE
dw ItemUseRepel ; REPEL
dw UnusableItem ; OLD_AMBER
dw ItemUseEvoStone ; FIRE_STONE
dw ItemUseEvoStone ; THUNDER_STONE
dw ItemUseEvoStone ; WATER_STONE
dw ItemUseVitamin ; HP_UP
dw ItemUseVitamin ; PROTEIN
dw ItemUseVitamin ; IRON
dw ItemUseVitamin ; CARBOS
dw ItemUseVitamin ; CALCIUM
dw ItemUseVitamin ; RARE_CANDY
dw UnusableItem ; DOME_FOSSIL
dw UnusableItem ; HELIX_FOSSIL
dw UnusableItem ; SECRET_KEY
dw UnusableItem
dw UnusableItem ; BIKE_VOUCHER
dw ItemUseXAccuracy ; X_ACCURACY
dw ItemUseEvoStone ; LEAF_STONE
dw ItemUseCardKey ; CARD_KEY
dw UnusableItem ; NUGGET
dw UnusableItem ; ??? PP_UP
dw ItemUsePokedoll ; POKE_DOLL
dw ItemUseMedicine ; FULL_HEAL
dw ItemUseMedicine ; REVIVE
dw ItemUseMedicine ; MAX_REVIVE
dw ItemUseGuardSpec ; GUARD_SPEC_
dw ItemUseSuperRepel ; SUPER_REPL
dw ItemUseMaxRepel ; MAX_REPEL
dw ItemUseDireHit ; DIRE_HIT
dw UnusableItem ; COIN
dw ItemUseMedicine ; FRESH_WATER
dw ItemUseMedicine ; SODA_POP
dw ItemUseMedicine ; LEMONADE
dw UnusableItem ; S_S__TICKET
dw UnusableItem ; GOLD_TEETH
dw ItemUseXStat ; X_ATTACK
dw ItemUseXStat ; X_DEFEND
dw ItemUseXStat ; X_SPEED
dw ItemUseXStat ; X_SPECIAL
dw ItemUseCoinCase ; COIN_CASE
dw ItemUseOaksParcel ; OAKS_PARCEL
dw ItemUseItemfinder ; ITEMFINDER
dw UnusableItem ; SILPH_SCOPE
dw ItemUsePokeflute ; POKE_FLUTE
dw UnusableItem ; LIFT_KEY
dw UnusableItem ; EXP__ALL
dw OldRodCode ; OLD_ROD
dw GoodRodCode ; GOOD_ROD
dw SuperRodCode ; SUPER_ROD
dw ItemUsePPUp ; PP_UP (real one)
dw ItemUsePPRestore ; ETHER
dw ItemUsePPRestore ; MAX_ETHER
dw ItemUsePPRestore ; ELIXER
dw ItemUsePPRestore ; MAX_ELIXER
If you want change the use of an item simply change its pointer to the adress of another asm code.
This means that actually you might be able to create some new codes and then adress the item usage to this new code being, infact, to create items with new usages (as I did previously in some of my hacks).
-------
STEP 04: OPTIONAL
Aka: Last additional part for Items which use is meant for the Party Menu:
There's a table for that kind of issue, it's located at 0x13434 (04:7434)
Probabilly you need to repoint it in free space if you added evolution items (or even new healing items).
Unfortunately I don't know exactly the adress of the pointer since personally I haven't yet hacked those part of data (as for 11-17-2013, I'll change it for sure).
Anyway fortunately there's only 1 pointer which is located many adresses earlier before 0x1342a (04:742a).
db MOON_STONE
db ANTIDOTE
db BURN_HEAL
db ICE_HEAL
db AWAKENING
db PARLYZ_HEAL
db FULL_RESTORE
db MAX_POTION
db HYPER_POTION
db SUPER_POTION
db POTION
db FIRE_STONE
db THUNDER_STONE
db WATER_STONE
db HP_UP
db PROTEIN
db IRON
db CARBOS
db CALCIUM
db RARE_CANDY
db LEAF_STONE
db FULL_HEAL
db REVIVE
db MAX_REVIVE
db FRESH_WATER
db SODA_POP
db LEMONADE
db X_ATTACK
db X_DEFEND
db X_SPEED
db X_SPECIAL
db PP_UP
db ETHER
db MAX_ETHER
db ELIXER
db MAX_ELIXER
db $ff
And there's another table (Optional) if you eventually added new Key Items which use is meant for the outside:
Those are items which close the item menu when used.
UsableItems_CloseMenu: ; 13459 (4:7459)
db ESCAPE_ROPE
db ITEMFINDER
db POKE_FLUTE
db OLD_ROD
db GOOD_ROD
db SUPER_ROD
db $ff
If you're looking further to build your ultimate Red\Blue hack and eventually create the ultimate tool for lazy hackers, this thread is a must for you.
--------------------------
CREDITS:
*2Marck and Co. for the awesome Red Disassembly documents and stuff;
*Me (80C) for the holy patience of writing this huge tutorial;
*Gamefreak for stuff;
*End of list XP
I left this forum.
Offline
Good work, 80C. Looks very informative.
Offline
Good work, 80C. Looks very informative.
Thank you!
This tutorial worked also for me in the last part - I mean part 4, the optional one, so I could confirme it works.
Anyway I forgot (again) where was that pointer, anyway next time when I'll have the necessarily material time I'll post it for sure.
Also, this tutorial is more updated than KBM's tutorial on Item Hacking (which was really old).
I left this forum.
Offline
Thank you!
No problem ;)
Offline
I'm still going over some materials, but I wanted to see if there were any updates or notes for this I'm not seeing elsewhere.
I have successfully hacked in some items, one being an evolution stone, that functions just fine. It isn't tracking quantity however. Has anyone run across items not adding up in inventory, and is there something in particular to set?
Pokemon: Project Neo A Pokemon hack 15 years in the making...
Offline
This has to do with KeyItemBitField:
You should add one more byte to this table to define the new item as being not a key item, since key items to not have quantity.
Offline
You'll also want to change how KeyItemBitField is read by IsKeyItem_ if you add more than 32 items.
Offline
Ahhhh!
Thank you gentlemen (?), I wasn't doing anything with KeyItems so I skipped over reading up on that.
Should work out to replace the line "ld bc,15" with "ld bc, NUM_ITEMS+7/8", as had been suggested about the Pokemon yes? (NUM_ITEMS being a new constant)
Last edited by daMoose52 (2014-12-15 23:34:09)
Pokemon: Project Neo A Pokemon hack 15 years in the making...
Offline
Pages: 1