• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Research: Some Pokemon Gold Data

The dude

Metal is good
87
Posts
19
Years
    • Seen May 11, 2016
    ******************************************************************************

    Some things i found

    ******************************************************************************

    ******************************************************************************

    1. Pre-Game Hacking docs and data
    2. Actual Gameplay Hacking Data
    3.*******
    4.*******
    5.*******


    etc...

    ******************************************************************************
    1. Pre-Game Hacking docs and data
    ******************************************************************************

    a) (ASM) A Titlescreen from scratch
    b) Intro Offsets
    b) Titlescreen Offsets


    a) Titlescreen ASM TUT:
    Let's write a titlescreen for Pokemon Gold!

    Find some free space and insert your AGIXP Picture.
    You can have 255 Tiles on screen.
    So open up paint and draw your titlescren then insert it anywhere you like.

    Find some blank space in the rom and input this code!

    Turn Screen off:
    3E 63 ld a,63
    E0 40 ld (FF00+40),a ;lcd ctrl

    Get Pallete:
    06 0C ld b,0c
    CD 85 35 Call 3583

    Load GFX:
    21 xxxx ld hl,(2byte GFX pointer)
    11 yyyy ld de,(Tile Space - either 0088 or 0090)
    3E zz ld a,(gfx bank)

    Load Tile Arrangement:
    21 xxxx ld hl,(2byte to tile arrangement - must be in same bank as code)
    11 A0C3 ld de,C3A0
    0E FE ld c,FE

    Play Music:
    21 xxxx 2byte Music byte
    CD 98 3D Call 3D98

    Turn Screen on:
    3E E3 ld a,E3
    E0 40 ld (FF00+40),a ;lcd ctrl

    Wait for Keypress:
    CD 31 0A Call 0a31
    C9 Ret

    Now you need to point to it!
    At 6250 type in the 2byte pointer to the code! or type in a pointer to this code:
    21 xxxx 3e zz CF C9 x=2byte pointer to code zz=bank - This way you can have the titlescreen in another bank!

    b) Intro Offsets:
    6241 - Call intro
    624e - Skip intro sequence
    624f - Call titlescreen
    6513 - Credits Arrange

    New Game/Option Screen:

    359 - Pointer to mAIN mENU (7b86)

    5b0a - start of Options screen


    00=Continue 01=New game 02=Option 03=Mystery Gift

    0x5a98 Border Placing

    0x5ad5 - (02) Number of Options : 2
    0x5ad6 - (01) 1st Option - > New Game
    0x5ad7 - (02) 2nd Option - > Option
    0x5ad8 - (FF) End of menu

    Continue/New Game/Option Screen:

    0x5ad9 - (03) Number of Options : 3
    0x5ada - (00) 1st Option - > Continue
    0x5adb - (01) 2st Option - > New Game
    0x5adc - (02) 3rd Option - > Option
    0x5add - (FF) End of menu

    Continue/New Game/Option Screen/Mystery Gift Screen:

    0x5ade - (04) Number of Options : 4
    0x5adf - (00) 1st Option - > Continue
    0x5ae0 - (01) 2st Option - > New Game
    0x5ae1 - (02) 3rd Option - > Option
    0x5ae2 - (03) 3rd Option - > Mystery Gift
    0x5ae3 - (FF) End of menu

    The Introduction with Prof.Oak:
    0x5fc2 - 1st Oak Picture byte (0c)
    0x5fDe - Pokemon Picture (B7 Marill)
    0x60167 - 2nd Oak Picture byte (0c)
    0x6037 - Hiro Picture at name choosing screen (0A)
    0x60c0 - Hiro Picture at end of intro (0A)
    0x6061 - Marril's Cry (B7) 0x605f(033e00) for no cry


    Name Screen:

    0x60d3 - Pointer to Default Name
    0x60dc - Border size and Position
    0x60e2 No. Of Names
    0x609a - Name written! probably to rAm here!

    61f7 - Something to do woth the little ppl icon_!

    b9d1 = Rival!!!!

    name from 606c - 60d8

    How many letters can a name have (Hiro)
    0x11c42 - 07 - 7 letters

    0x60a5 - Which Little Sprite to Show 01-Hiro 02-Rival 03-Mom - 04 Box 1

    0x6049 - Call "What's your name" Text
    0x6049 - Call The Name List, Change to 000000 to Disable names.

    Game start:
    0x15319 - Where the game starts [Map Bank][Map][X][Y]
    0x5cea - How much money to start with : 3000 in hex = 0bb8 0x5cea = b8 0x5cef = 0b


    c) Titlescreen Offsets
    62bf - 00 = static title screen!
    0x62cc - Pointer to Top of the Titlescreen GFX 2b*
    0x62c1 - Pointer to Bottom of Titlescreen GFX 2b*
    0x630c - Hoho X,Y (Inverted)
    0x62d7 - Hoho Pointer to GFX 2b*
    0x98616 - Titlescreen Arrangement
    0x6381 - Top of Titlescreen Pallet map pointer 2b
    0x6387 - Top of Titlescreen Pallet Colour - (01 - BGP01)
    0x638c - Middle of Titlescreen (Gold Version text) Pallet map pointer 2b
    0x6392 - Middle of Titlescreen (Gold Version text) Pallet Colour (03 - BGP03)
    0x6397 - Bottom of Titlescreen Pallet map pointer 2b
    0x639d - Bottom of Titlescreen Pallet Colour - (04 - BGP04)

    ******************************************************************************
    2. Actual Gameplay Hacking Data
    ******************************************************************************
    a)Big Tileset Hack:
    b)Misc - Cant be bothered to organize it so here is loads of data...
    c)Personal Information! - My notes!!! Might be of help!

    a)Big Tileset Hack:
    This gives you 127 tiles instead of 48!

    Instructions... Just Copy the Hex to their adresses.

    How to use bigger tilesets - Remember that the tileset header has two unused bytes? 0000?
    Now they are the two byte pointer to the extra tiles! the extra tiles get loaded at 01:8800(VRAM1)
    So you can use them by inputing 80-FF in the block data!
    Palettes: After the regular tileset pallete declaration start to enter the rest of the tiles! from 60-FF.

    Offsets:
    00:2944 - Call $DrwVram1, Call 2953
    02:4046 - Call $UseVRAM1
    02:4091 - Call $UseVRAM1

    $DrwVram1 ( I normally put this at 00:0080 )
    ld a,01 ; Set VRAM1
    ld (ff00+4f),a ;
    ld hl,d0c3 ; Get tileset pointer
    ld a,(hl) ; Load Pointer into HL
    inc hl
    ld h,(hl)
    ld l,a
    ld de,8000 ; Put Tiles at 8000
    ld a,(d0c2); Get tileset Bank
    call 0AF0 - Load GFX
    ld a,(d0ce) ; Check for Extra Tileset!
    cp 00 ; If its blank then
    jr z,end ; return!
    ld hl,d0cd - Get extra tileset pointer
    ld a,(hl) ; Load Pointer into HL
    inc hl
    ld h,(hl)
    ld l,a
    ld de,9000 ; Put extra Tiles at 9000
    ld a,(d0c2); Get tileset Bank
    call 0AF0 - Load GFX
    $end:
    ld a,00 ;Set Vram to 0 again
    ld (ff00+4f),a
    ret

    $UseVRAM1 ( I normaly put this at 00:0070 )
    add a,08 - Adds 8 to the pallete declaration so it loads the that tile at VRAM0 0-7 VRAM 1 8-F
    ld (de),a - code from the the game, moved so the above instruction could be inserted!
    dec c
    inc de
    ret

    HEX: at 0080

    at 2944
    CD8000CD5329

    C601E04F21C3D07E23666FFAC2D0110090CDF00AFACDD0FE00281321CDD07E23666FFAC2D0110088FAC2D0CDF00A3E00E04FC9

    at 0070
    C60813120DC9


    at 8046
    CD7000
    at 8091
    CD7000

    b) Misc

    Items:
    Master ball starts at 0x68a0 next item is +seven bytes (0x68a7) and thereafter.

    1st byte: Price of item (2 bytes)
    3rd byte: The Effect - eg PP,HP heal , Evolution etc.
    4th byte: (How Much ?P Ether/Potion etc.)
    5th byte: Type of menu 80:(Use,Sel) xInf 00:(Normal Menu) x01
    6th byte: Which Pocket - 01=Item Pocket 02=Key Items 03=Ball Pocker 04=TM/HM
    7th byte: (1st/2nd) - 1st-Use Outside? 2nd - Use in battle? eg. 1st=A 2nd=B (AB)

    Music:
    Music Header:[80][xx][01][yy][02][zz][03][47][4C] xx=2b to first Channel, yy,zz Pointers to 2nd 3rd and 4th channels.
    Music Codes:
    [DA][xx][yy] - Tempo xxyy, the lower the faster e.g. Moderate [01][00] Fast [00][50] Slow [01][50]
    [E5][xx] - Volume? 77=Normal 44=Softer
    [DB][xx] - Instrument?
    [E6][00][01] - ???
    [E1][xx][yy] - Set it Hight for an erie sound, normal setting would be [10][12]
    [EF][xx] - Pan
    [D8][08][a7] -???
    [FD][xx]- Loop xx times... 00 = infinite loop.
    Notes:
    [yz] y=note z=length - 1=C 3=D 5=E 6=F 8=G A=A C=B 2=C# 4=D# 6=F# 9=G# B=A#
    [Dx] x=octave - 7=1 6=2 5=3 4=4 3=5 2=6 1=7 0=8

    The Music Pointers are at 0xe906e

    c) Personal Information!
    These are my notes.. written for me..but u can have a look!





    Diamond!(my gold hack):
    ONLY DIAMOND!!! - Always blue code... 17bb0!

    D400 - Saved Ram!!!


    List boxes!!!

    ld bc,0505
    push bc
    ld hl,Options here ! 4F and 57 tables!
    call 1bb3
    pop bc
    ld a,b
    "EA BA CE"ld (ceba),a
    add a,07
    ld cebc,a
    add a,c
    add a,04
    call 1c62

    ceca yes no

    11000110


    Delay
    c=delay time
    call 033c

    Put the Pallete at c280
    ld a,01 into ffe7
    and call 038a

    1!! 0f60ba
    Quick pallete!
    ld c,PALLETE (1b)
    call 3583... load Pallet!

    Call 03b1 - Fade Screen

    04:6d07 - Items in start menu Calls

    04:6994 - Start Menu Code

    10:4000 - Pokedex Code
    14:404F - Pokemon List
    04:4430 - Pack
    24:4B5E - Pokegear



    ------------------------------------------------

    Call 2c21 - Get Map Back!

    Load your pallete into c280 and call 032e
    use 311a code to load your pallete

    Call 1c41 = yes no box
    cee0 - 1=yes 2=no

    eg:
    ld hl,xxxx get
    ld de,c280 put
    ld bc,000a no. 0f bytes
    call 311a
    call 032e

    eg:

    Intro Stuff:

    2e34: credit intro stuff?


    5585 sets the Hiro Sprite

    5c25:
    Call 5bf7 - ccd 5fall intro
    Call 5fa5
    Call 5d979 - Little man before map load

    6241 - Call intro


    41501 - Pokedex ... Invert Text Tiles!
    414CD - Pokedex invert botton 2 tiles!
    414e6 - Pokedex graphics pointer

    142b4 - Hiro sprite pointer pointer
    147de - 05:47de - Hiro Sprite Pointer!

    3e348 - Placement of da little arrow
    3e331 - Placement of Attacks
    3e319 - FIGHt - Attacks Border
    3e533 - Where Border for Atack PP goes
    3e58f - Where "TYPE/" Goes
    3e5bf - Where type goes
    3e50d - Where PP p1 goes
    3e598 - Where "/" Goes
    3e5aa - Where PP p2 goes
    3ee89 - Level up stats border

    5ed7 - Something to do with Saving? Research Later

    5ea9 - Continue Border placement

    5ae4 - Call Viarable Borders Text

    75e0 - Load Signposts!

    21 xx xx 110088 3e yy cdf00a 3e38 210240 cfc9

    x120190 - 1st Signpost!

    75f8 = 3rd sp

    1c2700 and 33c000 - Signpost GFX

    hmm... Palette Code???

    ld hl,c3a0
    ld b,03 - height
    ld c,0a - width
    ld a,04 - pallete colour
    jp 0f35
    ld a,(d19e)
    and 01
    ret

    cd 31 0a wait for a or b!





    75f0

    (3bp)0F8678 - battle Border wh

    (0f:78bb) 3f8bb - Put your Pokemon at c41a

    1c41 - Yes/no box y/X

    5b9c - ret no time set txt
    5b6b - Dont ya be showin da date!

    f80 - Defines text codes!


    ld hl,ram adreess eg c490
    ld bc, width+height!
    Call 0eef = Make Border!!!

    f60 - Where in map text is put!!!
    call 0ecf ... fill with 7F

    f45 - Where in map Border Goes!!
    f48-f49 - Textbox Width and height!!!
    1221 - try to fix code f7

    No start Menu Descriptor: 00s from 12c75 to 12c7b and 12c7f to 12c92

    470? 3byte pointer to ???

    05:4032

    08:4021 - Change to ret for no time reset
    21 a0 c3 ld hl,c3a0
    3e 7e ld a,7e
    08:4031 (083140) 20031 = Call ???? ... ChaNGE to ret for no reset time!
    08:4031
    5e76 calls it 1st i think

    5c00 Call Load Font for New Game Options etc...


    09:4e87 (09874e) - Call Moves list in battle


    5bfd- CaLL BG FILL 0Ecf AT 1ST MENU ... HACKING POSSIBLILITYIS HERE!

    diamond:
    7bb0 - Black BG Code







    5a88 - Something to do with continue

    13526 - 043675 04:7536 Go to Fill BG with 7f called by battle



    5ae3 ... Put Text into Menu!

    907b2 - tyime menu!!!!


    5c17 - Point to options!


    6246 - go straight to titlescreen!, Errors here...

    5faa - nop = Skip Time! , Pointer To Time,(here one can write a new intro! Call the new ntro and then a ret command!

    906ad - Initial Hour

    time at 244146 - 0x90641





    407e 4080

    3d33 - no animations!

    Title screen

    62e4 --- Put Stars at ???? ld de,8f80 11 80 8f

    632f - 00 or 22 = static TSCREEN!

    6380 ld hl,9800 Where BGP1 Put at 9000 in MAP

    6386 ld a,3 -- Load Palette 3 into A

    638e ld hl,98c5 bgp 3 goes here
    ld bc,010a ???
    ld a,03 ... Palete 3


    633a do titlesreen music!

    ASM CODE
    Load GFX

    ld hl,xx yy - pointer to GFX
    ld de,8800 (8800) ram the pics start
    ld a,zz --- zz = bank
    call 0af0

    in hex....
    11xxyy1100883ezzcdf00a



    da0 - here is da font loader loader hah!

    F8840 border 2bpp byte!


    About You Box

    around 2526b



    6316 - 11 xx xx load something maybe start x,y!

    Diploma ASM
    0xE0002

    d5e : Call Font Pointer

    31:7CD9 (31D97C) [C7CD9] - Pokemon Nickname when given asm


    Powmon:
    intro

    5fbe:
    ld (D004),a
    ld a,01
    ld (D11D),a
    call 61DF









    Code to Call Other Bank

    3E bk LD A,bank
    20 2byte LD HL,2byte
    CF RST 08
    C9 RET

    f:7949 - battle scroll


    ram cb34 - Rival's Name!



    1b03d2



    Some ASM CODEs





    ASM Scripts:

    Make Pallete??
    21 xx xx ld hl,c280
    ld bc,0088 ???
    ld a ff???
    call 314c ?????


    Print Tiles(Up to 9f!!!)
    21 xx xx : ld hl,place in map ram eg c4b9
    11 xx xx : ld de,text
    cd 74 0f : call 0f74

    Place Palette_
    21 xx xx : ld hl,(map placement)
    01 yy yy : ld bc,(height - Width)
    3E zz : ld a,(palette)
    CD A6 63 : Call 63A6

    Text Box_
    21 xx xx : load hl,(text pointer 2byte)
    CD 5E 0F : Call 0F5E

    Music Play_
    11 xx xx : ld de,(2byte Music)
    CD 98 3D : Call 3D98

    Load Compressed Graphics_
    21 xx xx : ld hl,(2-byte pointer to GFX)
    01 yy yy : ld bc,(Tile Area)
    3E zz : ld a,(GFX bank)
    CD A6 63 : Call 0AF0

    216699 010a01 3e03cd a6 63

    Fill BG with tile_
    21 A0 C3 : LD HL,C3A0
    3E XX : LD A,TILE 51
    21 68 01 : LD BC 0168???
    CALL 314C

    ld hl,4349
    ld a,23
    rst 08
    ret


    Apply Tile Arrangement_
    21 xx xx : ld hl,(2-byte pointer to tile arrangement table)
    01 yy yy : ld bc,(map placement)
    3E zz : ld a,(tile table bank)
    CD A6 63 : Call 3128

    Jump To and Come Back_
    3E xx : LD A,(bank)
    21 yyyy : LD HL,Pointer to ASM
    CF : RST 08
    C9 : RET

    Bank 3E: (Use Jump Code above)

    Load Graphics_
    11 xx xx : ld de,(2-byte pointer to GFX)
    21 yy yy : ld hl,(Tile Area)
    01 xx yy : ld bc,(GFX bank / number of tiles to load)
    C3 72 0E : jp 0E72

    Load Mochronome Graphics_
    11 xx xx : ld de,(2-byte pointer to GFX)
    21 yy yy : ld hl,(Tile Area)
    01 xx yy : ld bc,(GFX bank / number of tiles to load)
    C3 8D 0E : jp 0E8D






    my working outs:

    5ad5 db 02
    ld bc,ff02




    ld a,24
    ld hl,4641
    rst 08




    4cb1
    39













    Titlescreen
    636e call Palletes

    ld hl,4616ld de,9880
    ld a,26
    call

    5179D - change to FF to FF to make new pokemon

    Rom Header:
    0x143 - Gameboy Colour Features 00=None 80=GBC C0=GBC Only
    0x146 - Super Gameboy Features 00=none 03=SGB

    Credits:
    0x6513 - Credits Arrange

    Intro Sequence:
    0x624e - (00)=Skip intro sequence
    0x937320 - Pointer to BG gFX

    Title Screen:
    stop ho-ho,use A & B buttons for TSCREEN
    63f4 - 37 cd 31 0a c9

    01:63f4 Call stars animation
     

    Binary

    え?
    3,977
    Posts
    16
    Years
    • Seen Apr 7, 2014
    Wow nice work....
    It must have took long to right and it is really useful, bound to help G/S/C hackers....
    I wish someone found something like this for FR/LG lol.

    ~C3LEBI
     

    The dude

    Metal is good
    87
    Posts
    19
    Years
    • Seen May 11, 2016
    Lol thats only some of the data i found ... heheh
    I have tons more somewhere
     

    SerenadeDS

    Trainer
    283
    Posts
    17
    Years
    • Seen Jan 7, 2013
    Thanks for sharing the Info "The Dude!" Finding all the info isn't that hard (some of it is), but you jot it down so you have it for later. That's what I do. XD

    Well, I am sure this will help people, so thanks.
     

    Luck

    ¯\_(ツ)_/¯
    6,779
    Posts
    16
    Years
    • Seen May 20, 2023
    Yes...you'll say in your face NIN!
    When i didn't even do anything and don't remember anything at that moment.
    Well at least i'll be 80 by that time.
    I won't care about anything except myself.
     
    16
    Posts
    16
    Years
    • Seen Apr 26, 2009
    Thanks man, this is really useful.
    I appreciate the time you put into it, there isn't much on G/S/C and it's quite frustrating for people trying to learn it.
    Thank you.
     
    Back
    Top