The PokéCommunity Forums Fan Games ROM Hacking Research & Development
Quick Research & Development Thread

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!


Reply
 
Thread Tools
  #351    
Old August 6th, 2013 (2:16 PM).
Shiny Quagsire's Avatar
Shiny Quagsire Shiny Quagsire is offline
I'm Still Alive, Elsewhere
     
    Join Date: May 2009
    Location: Hoenn Safari Zone
    Age: 20
    Gender: Male
    Nature: Jolly
    Posts: 700
    By nulling out the function call at 0805BA3A, you can remove the flag check for running shoes. So removing it is as simple as writing 00 00 00 00 over the bytes there!
    __________________



    Reply With Quote

    Relevant Advertising!

      #352    
    Old August 7th, 2013 (6:50 PM).
    Alice's Avatar
    Alice Alice is offline
    (>^.(>0.0)>
     
    Join Date: Mar 2009
    Location: Oregon
    Age: 26
    Gender: Female
    Nature: Careful
    Posts: 3,079
    I'm just now getting into hex editing, and the more in depth ROM hacking stuff, and I've been looking at how maps are stored in the ROM. I've learned quite a lot, but I wasn't able to do one thing I was really hoping I could. Is it not possible to write bytes of maps to change tiles in game? It seemed like it would be easier than having a level script to change the tiles every time you enter the map. (Which might not actually be necessary, I've been scripting for all of 2 days, so I very well may be over complicating it, not sure.)
    I also tried rewriting the sound ID of a sound command to see if the next time that script was called the sound would be different, and it didn't change, so I'm guessing this isn't possible, but I thought I'd ask and see if anyone knew anything about it, and if there was a way to do it.
    Reply With Quote
      #353    
    Old August 9th, 2013 (7:49 PM).
    redriders180's Avatar
    redriders180 redriders180 is offline
    Mastermind of Pokemon Glazed
       
      Join Date: Jun 2010
      Location: Path of Victory, Tunod
      Gender: Male
      Nature: Quirky
      Posts: 540
      So, I'll post my just-now finding, but I don't know if it's been posted yet. For Emerald, it's very easy to script a wild battle where the foe tries to flee. Simply use setwildbattle to set the Pokemon's species, level, and held item, then callasm 0xB072D, followed by waitstate. Simple as that ^_^
      __________________


      I think I'm done with ROM hacking. I'll still pop in and visit, though.


      Reply With Quote
        #354    
      Old August 10th, 2013 (6:56 AM).
      GoGoJJTech's Avatar
      GoGoJJTech GoGoJJTech is offline
      (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
       
      Join Date: Nov 2012
      Location: Earth
      Age: 19
      Gender: Female
      Nature: Jolly
      Posts: 2,475
      Karatekid552 told me I should put this here:
      Quote:
      Originally Posted by karatekid552 View Post
      To remove badge checks from ALL HMs on the POKEMON MENU:

      Go to 0x124620 and paste-write "01 20 00 00 00 00 00 00 00 00 00". And that is all.:D
      Firered
      __________________
      I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
      The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
      Romhack.me Profile - Pokecommunity Profile - Youtube Channel

      Support me at my site!
      Pokémon Platinum Red and Blue
      Reply With Quote
        #355    
      Old August 20th, 2013 (5:44 AM).
      SBird SBird is offline
         
        Join Date: Aug 2009
        Gender: Male
        Posts: 83
        Has anyone ever researched the ability of using moves outside of battle? Like is that just a thumb routine to be executed and how does one find it? I wondered if I was able to extend this, i mean it is easy to use attacks in scripts etc. but i'm looking for the attacks you can choose from the pokemon menu. (Like the HMs, dig, etc.)
        I am thinking of it just being a basic thumb routine.
        I don't care for the game version btw. at the moment, I would be happy if someone would have any data I would research myself for german rom versions anyways and I don't think there is any big difference between FR/LG and RSS.

        ~SBird
        Reply With Quote
          #356    
        Old August 21st, 2013 (5:30 PM).
        kearnseyboy6's Avatar
        kearnseyboy6 kearnseyboy6 is offline
        Aussie's Toughest Mudder
           
          Join Date: Dec 2008
          Posts: 300
          Your reflection palette is stored at 35E968
          __________________
          HOLIDAYING CURRENTLY!!
          Reply With Quote
            #357    
          Old August 21st, 2013 (6:30 PM).
          karatekid552's Avatar
          karatekid552 karatekid552 is offline
          What happens if I push it?....
             
            Join Date: Nov 2012
            Location: Do you really want to know? Really?
            Gender: Male
            Nature: Bold
            Posts: 1,766
            Quote:
            Originally Posted by SBird View Post
            Has anyone ever researched the ability of using moves outside of battle? Like is that just a thumb routine to be executed and how does one find it? I wondered if I was able to extend this, i mean it is easy to use attacks in scripts etc. but i'm looking for the attacks you can choose from the pokemon menu. (Like the HMs, dig, etc.)
            I am thinking of it just being a basic thumb routine.
            I don't care for the game version btw. at the moment, I would be happy if someone would have any data I would research myself for german rom versions anyways and I don't think there is any big difference between FR/LG and RSS.

            ~SBird
            This will be a feature of Jambo51's 649 patch once it is released. Until then, who knows.:p
            __________________

            Paired with Simba
            Reply With Quote
              #358    
            Old August 23rd, 2013 (10:24 AM).
            GoGoJJTech's Avatar
            GoGoJJTech GoGoJJTech is offline
            (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
             
            Join Date: Nov 2012
            Location: Earth
            Age: 19
            Gender: Female
            Nature: Jolly
            Posts: 2,475
            Used flags:
            Fire Red
            Spoiler:
            0x1
            0x2
            0x3
            0x4
            0x5
            0x6
            0x2B
            0x2C
            0x2E
            0x2F
            0x30
            0x31
            0x32
            0x33
            0x34
            0x35
            0x36
            0x37
            0x39
            0x3D
            0x3E
            0x3F
            0x40
            0x41
            0x42
            0x43
            0x44
            0x45
            0x46
            0x47
            0x48
            0x49
            0x4A
            0x4B
            0x4C
            0x4D
            0x50
            0x52
            0x54
            0x58
            0x59
            0x5C
            0x5D
            0x5F
            0x62
            0x63
            0x64
            0x65
            0x66
            0x67
            0x68
            0x69
            0x6A
            0x6B
            0x72
            0x75
            0x7A
            0x7B
            0x7C
            0x7D
            0x7E
            0x80
            0x81
            0x82
            0x84
            0x85
            0x86
            0x88
            0x8B
            0x8C
            0x8D
            0x8E
            0x91
            0x92
            0x93
            0x94
            0x95
            0x96
            0x97
            0x98
            0x99
            0x9A
            0x9B
            0x9C
            0x9E
            0x9F
            0xA0
            0xA1
            0xA2
            0xAA
            0xAD
            0xAE
            0xB1
            0xB2
            0xB3
            0xB4
            0xD5
            0xD6
            0xD7
            0xDC
            0xEA
            0x109
            0x10A
            0x10B
            0x118
            0x119
            0x11A
            0x11B
            0x120
            0x121
            0x124
            0x125
            0x126
            0x127
            0x128
            0x129
            0x142
            0x143
            0x144
            0x163
            0x16A
            0x16E
            0x16F
            0x188
            0x189
            0x190
            0x191
            0x192
            0x1A7
            0x1A8
            0x1B6
            0x1B7
            0x1B8
            0x1CE
            0x1CF
            0x1D0
            0x219
            0x21A
            0x21F
            0x230
            0x231
            0x232
            0x233
            0x234
            0x235
            0x236
            0x237
            0x238
            0x239
            0x23A
            0x23B
            0x23C
            0x23D
            0x23F
            0x240
            0x241
            0x243
            0x244
            0x245
            0x246
            0x247
            0x248
            0x249
            0x24A
            0x24B
            0x24D
            0x24E
            0x24F
            0x250
            0x251
            0x252
            0x253
            0x254
            0x255
            0x256
            0x257
            0x258
            0x259
            0x25B
            0x25E
            0x263
            0x264
            0x265
            0x266
            0x267
            0x268
            0x269
            0x26A
            0x26B
            0x26C
            0x26D
            0x26E
            0x26F
            0x270
            0x271
            0x272
            0x273
            0x274
            0x275
            0x276
            0x278
            0x27A
            0x27B
            0x27C
            0x27D
            0x27E
            0x27F
            0x280
            0x281
            0x282
            0x283
            0x284
            0x285
            0x286
            0x287
            0x288
            0x289
            0x28A
            0x28B
            0x28C
            0x28D
            0x290
            0x291
            0x292
            0x293
            0x294
            0x295
            0x296
            0x297
            0x298
            0x29A
            0x29B
            0x29C
            0x29D
            0x29E
            0x29F
            0x2A0
            0x2A1
            0x2A2
            0x2A3
            0x2A5
            0x2A6
            0x2BB
            0x2BC
            0x2BD
            0x2BE
            0x2BF
            0x2C0
            0x2C1
            0x2C2
            0x2C3
            0x2C4
            0x2C5
            0x2C6
            0x2C7
            0x2C8
            0x2C9
            0x2CA
            0x2CB
            0x2CC
            0x2CD
            0x2CE
            0x2CF
            0x2D0
            0x2D1
            0x2D2
            0x2D3
            0x2D4
            0x2D5
            0x2D6
            0x2D7
            0x2D8
            0x2D9
            0x2DA
            0x2DB
            0x2DC
            0x2DD
            0x2E1
            0x2E2
            0x2E3
            0x2E4
            0x2E5
            0x2EC
            0x2ED
            0x2EE
            0x2EF
            0x2F0
            0x2F1
            0x2F2
            0x2F3
            0x2F4
            0x2F5
            0x2F6
            0x2F7
            0x2F8
            0x2F9
            0x2FA
            0x2FB
            0x2FC
            0x2FD
            0x2FE
            0x2FF
            0x4B0
            0x4B1
            0x4B2
            0x4B3
            0x4B4
            0x4B5
            0x4B6
            0x4B7
            0x4B8
            0x4B9
            0x4BA
            0x4BB
            0x4BC
            0x805
            0x807
            0x820
            0x821
            0x822
            0x823
            0x824
            0x825
            0x826
            0x827
            0x828
            0x829
            0x82C
            0x82D
            0x82F
            0x830
            0x834
            0x83E
            0x841
            0x842
            0x844
            0x845
            0x846
            0x847
            0x848
            0x849
            0x84A
            0x84B
            0x890
            0x891
            0x892
            0x893
            0x894
            0x895
            0x896
            0x897
            0x898
            0x899
            0x89A
            0x89B
            0x89C
            0x89D
            0x89E
            0x89F
            0x8A0
            0x8A1
            0x8A2
            0x8A3
            0x8A4
            0x8A5
            0x8A6
            0x8A7
            0x8A8
            0x8A9
            0x8AA
            0x8AB
            0x8AC
            0x8AD
            0x8AE
            0x8AF
            0x8B0
            0x8B1
            0x8B2
            0x8B3
            0x8B4
            0x8B5
            0x8B6
            0x8B7
            0x8B8
            0x8B9
            0x8BA
            0x8BB
            0x8BC
            0x8BD
            0x8BE
            0x8BF
            0x8C0
            0x8C1
            0x8C2


            Emerald
            Spoiler:
            0x1
            0x2
            0x3
            0x4
            0x11
            0x12
            0x13
            0x14
            0x15
            0x16
            0x17
            0x18
            0x19
            0x1A
            0x1B
            0x1C
            0x1D
            0x1E
            0x1F
            0x38
            0x41
            0x47
            0x48
            0x49
            0x4A
            0x50
            0x51
            0x52
            0x53
            0x58
            0x59
            0x5A
            0x5B
            0x5C
            0x5D
            0x5E
            0x5F
            0x60
            0x61
            0x62
            0x63
            0x64
            0x65
            0x66
            0x67
            0x69
            0x6A
            0x6B
            0x6C
            0x6D
            0x6E
            0x6F
            0x70
            0x71
            0x73
            0x74
            0x75
            0x76
            0x77
            0x78
            0x79
            0x7A
            0x7B
            0x7C
            0x7D
            0x7E
            0x7F
            0x80
            0x81
            0x82
            0x83
            0x84
            0x85
            0x86
            0x87
            0x88
            0x89
            0x8A
            0x8B
            0x8C
            0x8D
            0x8E
            0x8F
            0x90
            0x91
            0x92
            0x93
            0x94
            0x95
            0x97
            0x98
            0x99
            0x9A
            0x9B
            0x9C
            0x9D
            0x9E
            0x9F
            0xA0
            0xA1
            0xA2
            0xA3
            0xA4
            0xA5
            0xA6
            0xA7
            0xA8
            0xA9
            0xAA
            0xAB
            0xAC
            0xAE
            0xAF
            0xB0
            0xB1
            0xB2
            0xB3
            0xB4
            0xB5
            0xB6
            0xB7
            0xB8
            0xB9
            0xBA
            0xBB
            0xBC
            0xBD
            0xBE
            0xBF
            0xC0
            0xC1
            0xC2
            0xC3
            0xC4
            0xC5
            0xC6
            0xC7
            0xC8
            0xC9
            0xCA
            0xCB
            0xCC
            0xCD
            0xCE
            0xCF
            0xD0
            0xD1
            0xD2
            0xD3
            0xD4
            0xD5
            0xD7
            0xD8
            0xD9
            0xDA
            0xDB
            0xDD
            0xDE
            0xDF
            0xE0
            0xE1
            0xE2
            0xE3
            0xE4
            0xE5
            0xE6
            0xE7
            0xE8
            0xE9
            0xEA
            0xEB
            0xEC
            0xED
            0xEE
            0xEF
            0xF0
            0xF1
            0xF2
            0xF3
            0xF4
            0xF5
            0xF6
            0xF7
            0xF8
            0xF9
            0xFA
            0xFB
            0xFC
            0xFD
            0xFE
            0xFF
            0x100
            0x101
            0x102
            0x103
            0x104
            0x105
            0x106
            0x107
            0x108
            0x109
            0x10A
            0x10B
            0x10D
            0x10E
            0x10F
            0x110
            0x111
            0x112
            0x113
            0x114
            0x115
            0x116
            0x117
            0x118
            0x119
            0x11A
            0x11B
            0x11C
            0x11D
            0x11E
            0x11F
            0x120
            0x121
            0x122
            0x124
            0x125
            0x126
            0x127
            0x128
            0x129
            0x12A
            0x12B
            0x12C
            0x12D
            0x12E
            0x12F
            0x130
            0x131
            0x132
            0x133
            0x134
            0x135
            0x136
            0x137
            0x138
            0x139
            0x140
            0x141
            0x143
            0x14E
            0x14F
            0x150
            0x151
            0x152
            0x153
            0x154
            0x155
            0x156
            0x157
            0x159
            0x15A
            0x15B
            0x191
            0x192
            0x194
            0x1A9
            0x1AA
            0x1AC
            0x1AD
            0x1AE
            0x1AF
            0x1B0
            0x1B1
            0x1B2
            0x1B3
            0x1B4
            0x1B5
            0x1B6
            0x1B7
            0x1B8
            0x1B9
            0x1BA
            0x1BB
            0x1BC
            0x1BD
            0x1BE
            0x1BF
            0x1C0
            0x1C1
            0x1C2
            0x1C3
            0x1C4
            0x1C5
            0x1C6
            0x1C7
            0x1C8
            0x1C9
            0x1CA
            0x1CB
            0x1CC
            0x1CD
            0x1CE
            0x1CF
            0x1D0
            0x1D1
            0x1D2
            0x1D4
            0x1D5
            0x1D6
            0x1D7
            0x1D8
            0x1D9
            0x1DB
            0x1DC
            0x1DD
            0x1ED
            0x1EE
            0x1EF
            0x1F5
            0x1F6
            0x23B
            0x23C
            0x23D
            0x23E
            0x23F
            0x246
            0x247
            0x248
            0x249
            0x24F
            0x25E
            0x265
            0x266
            0x281
            0x287
            0x288
            0x289
            0x28A
            0x28E
            0x28F
            0x2BC
            0x2BD
            0x2BF
            0x2C0
            0x2C1
            0x2C2
            0x2C3
            0x2C4
            0x2C5
            0x2C6
            0x2C7
            0x2C8
            0x2C9
            0x2CA
            0x2CB
            0x2CC
            0x2CE
            0x2CF
            0x2D0
            0x2D1
            0x2D2
            0x2D6
            0x2D8
            0x2DA
            0x2DC
            0x2DF
            0x2E0
            0x2E1
            0x2E2
            0x2E3
            0x2E4
            0x2E5
            0x2E6
            0x2E7
            0x2E8
            0x2E9
            0x2EA
            0x2F1
            0x2F2
            0x2F3
            0x2F4
            0x2F6
            0x2F7
            0x2F8
            0x2F9
            0x2FA
            0x2FB
            0x2FC
            0x2FE
            0x2FF
            0x300
            0x301
            0x302
            0x303
            0x307
            0x308
            0x309
            0x30A
            0x30B
            0x30C
            0x30D
            0x30E
            0x30F
            0x310
            0x311
            0x313
            0x314
            0x319
            0x31C
            0x31D
            0x31E
            0x31F
            0x320
            0x321
            0x322
            0x323
            0x326
            0x327
            0x328
            0x329
            0x32E
            0x32F
            0x330
            0x331
            0x332
            0x333
            0x335
            0x336
            0x337
            0x33A
            0x33B
            0x33C
            0x33D
            0x33E
            0x33F
            0x340
            0x343
            0x347
            0x348
            0x349
            0x34A
            0x34B
            0x34C
            0x34D
            0x34E
            0x34F
            0x350
            0x351
            0x354
            0x356
            0x357
            0x358
            0x359
            0x35A
            0x35B
            0x35C
            0x35E
            0x35F
            0x360
            0x361
            0x362
            0x365
            0x366
            0x369
            0x36A
            0x36D
            0x36E
            0x370
            0x371
            0x372
            0x373
            0x379
            0x37A
            0x37B
            0x37C
            0x37D
            0x37E
            0x380
            0x381
            0x382
            0x384
            0x385
            0x386
            0x387
            0x388
            0x389
            0x38A
            0x390
            0x391
            0x393
            0x394
            0x395
            0x396
            0x39C
            0x39E
            0x39F
            0x3A0
            0x3A1
            0x3A5
            0x3A6
            0x3A7
            0x3A8
            0x3A9
            0x3AC
            0x3AD
            0x3AE
            0x3B0
            0x3B1
            0x3B2
            0x3B3
            0x3B4
            0x3B5
            0x3B7
            0x3B8
            0x3B9
            0x3BA
            0x3BB
            0x3BC
            0x3BD
            0x3BE
            0x3BF
            0x3C1
            0x3C2
            0x3C3
            0x3C4
            0x3C5
            0x3C7
            0x3C8
            0x3CD
            0x3CE
            0x3CF
            0x3D0
            0x3D1
            0x3D2
            0x3D3
            0x3D4
            0x3D7
            0x3D8
            0x3DF
            0x3E0
            0x3E1
            0x3E2
            0x3E5
            0x3E6
            0x3E7
            0x436
            0x4F0
            0x4F1
            0x4F2
            0x4F3
            0x4F4
            0x4F5
            0x4F6
            0x4F7
            0x4F8
            0x4FB
            0x4FC
            0x4FD
            0x4FE
            0x860
            0x861
            0x862
            0x864
            0x865
            0x866
            0x867
            0x868
            0x869
            0x86A
            0x86B
            0x86C
            0x86D
            0x86E
            0x870
            0x871
            0x872
            0x873
            0x874
            0x875
            0x876
            0x877
            0x878
            0x879
            0x87A
            0x87B
            0x87C
            0x87E
            0x880
            0x889
            0x88A
            0x88B
            0x892
            0x89A
            0x89B
            0x89C
            0x89D
            0x89E
            0x89F
            0x8A0
            0x8A1
            0x8A3
            0x8A4
            0x8A5
            0x8A6
            0x8A7
            0x8A8
            0x8A9
            0x8AA
            0x8AB
            0x8AF
            0x8B0
            0x8B1
            0x8B2
            0x8B3
            0x8B4
            0x8B5
            0x8B6
            0x8B7
            0x8B8
            0x8B9
            0x8BA
            0x8BB
            0x8BC
            0x8BE
            0x8BF
            0x8C0
            0x8C1
            0x8C3
            0x8C4
            0x8C5
            0x8C6
            0x8C7
            0x8C8
            0x8C9
            0x8CA
            0x8CB
            0x8CC
            0x8CD
            0x8CE
            0x8CF
            0x8D0
            0x8D1
            0x8D2
            0x8D3
            0x8D4
            0x8D5
            0x8D6
            0x8D8
            0x8D9
            0x8DA
            0x8DC
            0x8DD
            0x8DE
            0x8DF
            0x8E0
            0x8E1
            0x8E2
            0x921
            0x92A
            0x92B
            0x92C
            0x92D
            0x92E
            0x92F
            0x930
            0x931
            0x932
            0x934
            __________________
            I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
            The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
            Romhack.me Profile - Pokecommunity Profile - Youtube Channel

            Support me at my site!
            Pokémon Platinum Red and Blue
            Reply With Quote
              #359    
            Old August 24th, 2013 (11:36 AM).
            slawter666's Avatar
            slawter666 slawter666 is offline
               
              Join Date: Sep 2008
              Posts: 84
              Now this has probably posted before but I couldn't find it and it seems like a fun feature: Riding pokémon like in the upcoming games.

              I'm not too well versed with programming but my idea is as follows:

              My idea would be to have a bit for each pokémon that determines whether it is "ridable" or not. On the menu where you can view the pokémon's stats, held item etc there would be a check for this bit and if it is the value that means its ridable a ride option would appear, if not it wouldn't. Once selected the appropriate overworld would be loaded determined by something unique to each pokemon (id number?) and all would be great. Obviously going through this step everytime you want to ride a pokémon would be tedious so this feature could replace the bike. The last pokemon you rode could be stored somehow so when you press select the game would look to see if that pokémon was in your party and if not it would just load the regular bike sprite.

              There would need to be a lot of custom overworlds made but the HGSS pokemon overworlds could be used for now.

              As I said previously I'm not familiar with coding so various details could be wrong/far more complicated than I made out.

              Something similar could be done with surf I guess.

              Has anyone considered/attempted this before? I do think it would make a very interesting feature.
              __________________
              Reply With Quote
                #360    
              Old August 24th, 2013 (11:55 AM).
              karatekid552's Avatar
              karatekid552 karatekid552 is offline
              What happens if I push it?....
                 
                Join Date: Nov 2012
                Location: Do you really want to know? Really?
                Gender: Male
                Nature: Bold
                Posts: 1,766
                Quote:
                Originally Posted by slawter666 View Post
                Now this has probably posted before but I couldn't find it and it seems like a fun feature: Riding pokémon like in the upcoming games.

                I'm not too well versed with programming but my idea is as follows:

                My idea would be to have a bit for each pokémon that determines whether it is "ridable" or not. On the menu where you can view the pokémon's stats, held item etc there would be a check for this bit and if it is the value that means its ridable a ride option would appear, if not it wouldn't. Once selected the appropriate overworld would be loaded determined by something unique to each pokemon (id number?) and all would be great. Obviously going through this step everytime you want to ride a pokémon would be tedious so this feature could replace the bike. The last pokemon you rode could be stored somehow so when you press select the game would look to see if that pokémon was in your party and if not it would just load the regular bike sprite.

                There would need to be a lot of custom overworlds made but the HGSS pokemon overworlds could be used for now.

                As I said previously I'm not familiar with coding so various details could be wrong/far more complicated than I made out.

                Something similar could be done with surf I guess.

                Has anyone considered/attempted this before? I do think it would make a very interesting feature.
                This would be interesting. I'm imagining more of a hack of the surf routine for this.... Just run that whole routine the same, but make the image change.
                __________________

                Paired with Simba
                Reply With Quote
                  #361    
                Old August 24th, 2013 (4:36 PM).
                SBird SBird is offline
                   
                  Join Date: Aug 2009
                  Gender: Male
                  Posts: 83
                  I acutally thought about this when I was asking the new cut like moves thingy. My current idea is to hijack the overworld routine(which basically takes the Overworld ID as input and then loads the sprite) so that the bike overworld is replaced by a dynamic ID. This way you don't have to concern about graphics anymore. I actually already wrote such a routine, but replaced the normal hero OW, it would not be a problem to extend this for the bike OW though. I also thought about making an item to do this job, one could basically hack the bike routine to do this and just check for any ridable pokémon in the current party. If there is no such pokémon it would basically not work and display a message. It would be way cooler though to have the ability on the pokémon itself(Like on the menu or as a dedicated move)

                  Everything else can be done very easily(You can see the outcome of this in the pokémon sovereign of the skies thread or on the youtube video: https://www.youtube.com/watch?v=IcYepxEgAHA

                  I may also give you the code sample for this if you want just ask me via PM it's for the german emerald version though (BPED) and you need to figure out the needed branches and routines yourself for your version(also the dedicated offsets)

                  What would be still really nice would be a way to implement this in a user friendly way. An item would be fine but how would it look like? Like a whip? Guess that would be rather harsh. Also the user can't decide which pokémon to ride this way. Not the best option I suppose...

                  ~SBird
                  Reply With Quote
                    #362    
                  Old August 24th, 2013 (7:34 PM).
                  karatekid552's Avatar
                  karatekid552 karatekid552 is offline
                  What happens if I push it?....
                     
                    Join Date: Nov 2012
                    Location: Do you really want to know? Really?
                    Gender: Male
                    Nature: Bold
                    Posts: 1,766
                    Quote:
                    Originally Posted by SBird View Post
                    I acutally thought about this when I was asking the new cut like moves thingy. My current idea is to hijack the overworld routine(which basically takes the Overworld ID as input and then loads the sprite) so that the bike overworld is replaced by a dynamic ID. This way you don't have to concern about graphics anymore. I actually already wrote such a routine, but replaced the normal hero OW, it would not be a problem to extend this for the bike OW though. I also thought about making an item to do this job, one could basically hack the bike routine to do this and just check for any ridable pokémon in the current party. If there is no such pokémon it would basically not work and display a message. It would be way cooler though to have the ability on the pokémon itself(Like on the menu or as a dedicated move)

                    Everything else can be done very easily(You can see the outcome of this in the pokémon sovereign of the skies thread or on the youtube video: https://www.youtube.com/watch?v=IcYepxEgAHA

                    I may also give you the code sample for this if you want just ask me via PM it's for the german emerald version though (BPED) and you need to figure out the needed branches and routines yourself for your version(also the dedicated offsets)

                    What would be still really nice would be a way to implement this in a user friendly way. An item would be fine but how would it look like? Like a whip? Guess that would be rather harsh. Also the user can't decide which pokémon to ride this way. Not the best option I suppose...

                    ~SBird
                    I think a saddle would work. However, your method is much more difficult than mine. The structure of OWs involves 4 different tables, and each sprite, just for headers and pointers, nevermind the images themselves, would need at least 30 bytes, per image. For my idea, we would just read directly from an image table with 12 bytes max (pokemon number (2bytes), img pointer (4 bytes), palette pointer (4 bytes)). And we wouldn't have to deal with all of the extra data that OWs have.

                    Also, I'm sad to say, that on Emerald, there is no hack to allow more than 256 OWs. Right now, emerald is already at 240. This would limit you to an extreme amount unless you port over JPAN's massive OW hack.

                    On another note, we could also just hack the OW loader, so that when it is loading the bike, we simply push it to a different table, but using all of the same parameters as the bike. Then we wouldn't need to worry about expanding OWs.

                    If Jambo is interested, he could code it into a move himself, since he knows how to, but I don't know if this would be his thing.

                    If you do want to continue with the bike OW thing, go to RHO. I just finished code to force an immediate OW switch that doesn't require a reload of the screen or warping.
                    __________________

                    Paired with Simba
                    Reply With Quote
                      #363    
                    Old August 24th, 2013 (8:26 PM). Edited August 24th, 2013 by SBird.
                    SBird SBird is offline
                       
                      Join Date: Aug 2009
                      Gender: Male
                      Posts: 83
                      Quote:
                      Originally Posted by karatekid552 View Post
                      I think a saddle would work. However, your method is much more difficult than mine. The structure of OWs involves 4 different tables, and each sprite, just for headers and pointers, nevermind the images themselves, would need at least 30 bytes, per image. For my idea, we would just read directly from an image table with 12 bytes max (pokemon number (2bytes), img pointer (4 bytes), palette pointer (4 bytes)). And we wouldn't have to deal with all of the extra data that OWs have.

                      Also, I'm sad to say, that on Emerald, there is no hack to allow more than 256 OWs. Right now, emerald is already at 240. This would limit you to an extreme amount unless you port over JPAN's massive OW hack.

                      On another note, we could also just hack the OW loader, so that when it is loading the bike, we simply push it to a different table, but using all of the same parameters as the bike. Then we wouldn't need to worry about expanding OWs.

                      If Jambo is interested, he could code it into a move himself, since he knows how to, but I don't know if this would be his thing.

                      If you do want to continue with the bike OW thing, go to RHO. I just finished code to force an immediate OW switch that doesn't require a reload of the screen or warping.
                      I don't think it would be a problem to expand the OW table or at least use some sort of switch to use an alternate table if needed. I did not try it though. I already have my code to change the OW. Actually as said i'm only hijacking the loader routine and switching out the parameter(which is passed by r0 or r1, not quite sure at the moment) to make the game load a different OW. It does not actually effect how the sprite is handled by the game, so if you load a sprite without running animation you won't have one, the game will just accept it as being the new hero OW. If you do load a sprite with a few extra frames it will be no problem eighter, they are just not used. Also if you replace the bike and use the bike routine one will be able to "ride" a pokémon. If it is needed you would also have to expand the OW table. In fact this is (i guess) regulated by a simple cmp opcode to check if the passed argument is greater than the fixed value, if it is, it handles it differently and I guess OWs over 255(1byte) will be killed by the standardized lsl lsr structures that classifies the argument as a byte value, leaving only the last 8 bit of the parsed value. If someone wants to increase the amount of OWs in the table he would have to a) repoint the table to somewhere in the rom, b) increase the parsed value to at least half-word size and c) bypass the compare that is used by the game to check wether the OW is one of the "special treated" ones. Maybe you could arrange it so that those won't get lost and you just load your real OWs above the byte border again. I don't know exactly what those few OWs are for, but I guess if you are able to keep them you always should because it's part of the main game.

                      I did once write a routine to at least use more than one OW table therefore I know that it's working, but I did not test to expand the current table at all. I just don't see any obstacles(I did not look at JPANs routines eighter, since they are all for Firered and I guess at least in the part of how the game handles overworlds those two have some differences, at least in FR OWs are also captable of executing scripts if the right sort of behavior byte is set, this is not the case in Emerald)

                      Well I guess i will try to use some sort of item first, for the moment I just can't come up with another solution probably it is also possible to implement some sort of "professional tamer" who allows you to "set" your saddle to a specific pokémon which of course can be "ridden" so you have an actual explanation for the player. Still using a ride move would be the best solution(in my opinion) but who knows what the future brings...

                      ~SBird

                      Edit: I guess if one expands the OW table he is also not able to use the new OW regularly on a map, at least advance map does not allow half word sized values. I don't know if this is also stored in byte form but it should'nt bother the game if it loads it from a dynamic ram adress like a in-game variable or something, you can basically store the "new bike" OWs and everything you do not need to use like regurarly on a map beyond the byte limit and your regular ows befor that. I don't know how JPAN worked himself arround this problem, I'm pretty sure advance map and other mapping tools won't support entrys beyond one byte if the map structure does not allow it. JPAN would have to hack the whole map structure which would make all the normal maps unuseable and the tools had to adapt themselves which is also unknown to me(Maybe i'm just uninformed) ;)
                      Reply With Quote
                        #364    
                      Old August 25th, 2013 (9:31 AM).
                      karatekid552's Avatar
                      karatekid552 karatekid552 is offline
                      What happens if I push it?....
                         
                        Join Date: Nov 2012
                        Location: Do you really want to know? Really?
                        Gender: Male
                        Nature: Bold
                        Posts: 1,766
                        Quote:
                        Originally Posted by SBird View Post
                        I don't think it would be a problem to expand the OW table or at least use some sort of switch to use an alternate table if needed. I did not try it though. I already have my code to change the OW. Actually as said i'm only hijacking the loader routine and switching out the parameter(which is passed by r0 or r1, not quite sure at the moment) to make the game load a different OW. It does not actually effect how the sprite is handled by the game, so if you load a sprite without running animation you won't have one, the game will just accept it as being the new hero OW. If you do load a sprite with a few extra frames it will be no problem eighter, they are just not used. Also if you replace the bike and use the bike routine one will be able to "ride" a pokémon. If it is needed you would also have to expand the OW table. In fact this is (i guess) regulated by a simple cmp opcode to check if the passed argument is greater than the fixed value, if it is, it handles it differently and I guess OWs over 255(1byte) will be killed by the standardized lsl lsr structures that classifies the argument as a byte value, leaving only the last 8 bit of the parsed value. If someone wants to increase the amount of OWs in the table he would have to a) repoint the table to somewhere in the rom, b) increase the parsed value to at least half-word size and c) bypass the compare that is used by the game to check wether the OW is one of the "special treated" ones. Maybe you could arrange it so that those won't get lost and you just load your real OWs above the byte border again. I don't know exactly what those few OWs are for, but I guess if you are able to keep them you always should because it's part of the main game.

                        I did once write a routine to at least use more than one OW table therefore I know that it's working, but I did not test to expand the current table at all. I just don't see any obstacles(I did not look at JPANs routines eighter, since they are all for Firered and I guess at least in the part of how the game handles overworlds those two have some differences, at least in FR OWs are also captable of executing scripts if the right sort of behavior byte is set, this is not the case in Emerald)

                        Well I guess i will try to use some sort of item first, for the moment I just can't come up with another solution probably it is also possible to implement some sort of "professional tamer" who allows you to "set" your saddle to a specific pokémon which of course can be "ridden" so you have an actual explanation for the player. Still using a ride move would be the best solution(in my opinion) but who knows what the future brings...

                        ~SBird

                        Edit: I guess if one expands the OW table he is also not able to use the new OW regularly on a map, at least advance map does not allow half word sized values. I don't know if this is also stored in byte form but it should'nt bother the game if it loads it from a dynamic ram adress like a in-game variable or something, you can basically store the "new bike" OWs and everything you do not need to use like regurarly on a map beyond the byte limit and your regular ows befor that. I don't know how JPAN worked himself arround this problem, I'm pretty sure advance map and other mapping tools won't support entrys beyond one byte if the map structure does not allow it. JPAN would have to hack the whole map structure which would make all the normal maps unuseable and the tools had to adapt themselves which is also unknown to me(Maybe i'm just uninformed) ;)
                        JPAN's hack, in its entirety, enables up to 65000 and most of the routines taken exist in all Advance Gen games, especially the main loader, which is exactly the same. However, I have a better idea.

                        What I am seeing, if we continue with the bike, is a hack near the end of the routine which branches if the hero's bike is being loaded. At that point, we send it to check a var which will then read from a table and load the correct sprite. This, combined with my OW hack (simply for instaloading of palettes) would work well and wouldn't require an expansion of OWs.
                        __________________

                        Paired with Simba
                        Reply With Quote
                          #365    
                        Old August 25th, 2013 (12:12 PM).
                        SBird SBird is offline
                           
                          Join Date: Aug 2009
                          Gender: Male
                          Posts: 83
                          Quote:
                          Originally Posted by karatekid552 View Post
                          JPAN's hack, in its entirety, enables up to 65000 and most of the routines taken exist in all Advance Gen games, especially the main loader, which is exactly the same. However, I have a better idea.

                          What I am seeing, if we continue with the bike, is a hack near the end of the routine which branches if the hero's bike is being loaded. At that point, we send it to check a var which will then read from a table and load the correct sprite. This, combined with my OW hack (simply for instaloading of palettes) would work well and wouldn't require an expansion of OWs.
                          That could probably work as well, guess I'm going to consider implementing some of that after I finished implementing all the gen4/5 stuff...
                          There is still no solution for the "how", I'm still not converned by the idea of implementing an item for the sole purpose of riding a pokémon which you can't even choose.

                          ~SBird
                          Reply With Quote
                            #366    
                          Old August 25th, 2013 (1:47 PM).
                          Shiny Quagsire's Avatar
                          Shiny Quagsire Shiny Quagsire is offline
                          I'm Still Alive, Elsewhere
                             
                            Join Date: May 2009
                            Location: Hoenn Safari Zone
                            Age: 20
                            Gender: Male
                            Nature: Jolly
                            Posts: 700
                            If you ever feel the urge to stone a Pokemon to death, setting the byte at 080169D4 from 0x6 to 0x0 will make it so Pokemon don't flee after throwing 20 rocks at them in the safari zone in Fire Red. Not sure if anyone will ever actually use this but whatever. :P
                            __________________



                            Reply With Quote
                              #367    
                            Old August 25th, 2013 (3:58 PM).
                            karatekid552's Avatar
                            karatekid552 karatekid552 is offline
                            What happens if I push it?....
                               
                              Join Date: Nov 2012
                              Location: Do you really want to know? Really?
                              Gender: Male
                              Nature: Bold
                              Posts: 1,766
                              Quote:
                              Originally Posted by SBird View Post
                              That could probably work as well, guess I'm going to consider implementing some of that after I finished implementing all the gen4/5 stuff...
                              There is still no solution for the "how", I'm still not converned by the idea of implementing an item for the sole purpose of riding a pokémon which you can't even choose.

                              ~SBird
                              How is REALLY easy. We just make an item that checks species vs a table. If the species number appears on the table, said pokemon can be ridden. Now, it is only what that item is.
                              __________________

                              Paired with Simba
                              Reply With Quote
                                #368    
                              Old August 26th, 2013 (6:28 PM).
                              Shiny Quagsire's Avatar
                              Shiny Quagsire Shiny Quagsire is offline
                              I'm Still Alive, Elsewhere
                                 
                                Join Date: May 2009
                                Location: Hoenn Safari Zone
                                Age: 20
                                Gender: Male
                                Nature: Jolly
                                Posts: 700
                                Found the offset to disable Safari Zone pokemon from running in Pokemon Ruby. It's exactly the same procedure as my post above, but at offset 08014D3C.
                                __________________



                                Reply With Quote
                                  #369    
                                Old August 27th, 2013 (9:53 AM).
                                GoGoJJTech's Avatar
                                GoGoJJTech GoGoJJTech is offline
                                (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
                                 
                                Join Date: Nov 2012
                                Location: Earth
                                Age: 19
                                Gender: Female
                                Nature: Jolly
                                Posts: 2,475
                                The behavior bytes in Advance Map are stored in a really weird format. The later ones such as 80s-90s usually display messages. Each script is 9 bytes long, and is stored in a table. So I decided to find the start of said table by going 9 bytes left until I hit 0. The problem is, The area where I ended contains scripts like adding an item from "MSG_OBTAIN". So this is a stumble...
                                __________________
                                I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
                                The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
                                Romhack.me Profile - Pokecommunity Profile - Youtube Channel

                                Support me at my site!
                                Pokémon Platinum Red and Blue
                                Reply With Quote
                                  #370    
                                Old August 28th, 2013 (9:30 AM).
                                trafalgar's Avatar
                                trafalgar trafalgar is offline
                                FireBlast
                                   
                                  Join Date: Aug 2010
                                  Gender: Male
                                  Posts: 15
                                  Is there any way to swap the values ​​of two registers?
                                  r1 -> r2
                                  r1 <- r2

                                  Excuse my English but I use google translator: \
                                  Reply With Quote
                                    #371    
                                  Old August 28th, 2013 (9:32 AM).
                                  GoGoJJTech's Avatar
                                  GoGoJJTech GoGoJJTech is offline
                                  (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
                                   
                                  Join Date: Nov 2012
                                  Location: Earth
                                  Age: 19
                                  Gender: Female
                                  Nature: Jolly
                                  Posts: 2,475
                                  Quote:
                                  Originally Posted by trafalgar View Post
                                  Is there any way to swap the values ​​of two registers?
                                  r1 -> r2
                                  r1 <- r2

                                  Excuse my English but I use google translator: \
                                  This question goes here http://www.pokecommunity.com/showthread.php?p=7807384#post7807384
                                  But anyway you could store r1 in r3, then put r2 in r1, then r3 in r2
                                  Like this:
                                  r1 -> r3
                                  r2 -> r1
                                  r3 -> r2

                                  But clear r3 afterwards. The command you should use is mov.
                                  __________________
                                  I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
                                  The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
                                  Romhack.me Profile - Pokecommunity Profile - Youtube Channel

                                  Support me at my site!
                                  Pokémon Platinum Red and Blue
                                  Reply With Quote
                                    #372    
                                  Old August 28th, 2013 (1:41 PM).
                                  karatekid552's Avatar
                                  karatekid552 karatekid552 is offline
                                  What happens if I push it?....
                                     
                                    Join Date: Nov 2012
                                    Location: Do you really want to know? Really?
                                    Gender: Male
                                    Nature: Bold
                                    Posts: 1,766
                                    Quote:
                                    Originally Posted by gogojjtech View Post
                                    This question goes here http://www.pokecommunity.com/showthread.php?p=7807384#post7807384
                                    But anyway you could store r1 in r3, then put r2 in r1, then r3 in r2
                                    Like this:
                                    r1 -> r3
                                    r2 -> r1
                                    r3 -> r2

                                    But clear r3 afterwards. The command you should use is mov.
                                    Don't clear it, push it. So:

                                    Push {r3}
                                    Mov r3, r1
                                    Mov r1, r2
                                    Mov r2, r3
                                    Pop {r3}
                                    __________________

                                    Paired with Simba
                                    Reply With Quote
                                      #373    
                                    Old September 5th, 2013 (4:11 AM).
                                    xGal xGal is offline
                                    Mhm
                                       
                                      Join Date: Nov 2011
                                      Location: A tree
                                      Gender: Other
                                      Nature: Relaxed
                                      Posts: 243
                                      In Jambo's DirectSound voices per moment extention he said that the maximum for FR/LG/E is 12 DirectSound voices per moment and 7 in R/S. If you will choose a higher number, the game will probably freeze, crash, slow down etc.

                                      So is it possible to extend the limit using an ASM code?
                                      __________________
                                      Reply With Quote
                                        #374    
                                      Old September 5th, 2013 (2:02 PM).
                                      Jambo51's Avatar
                                      Jambo51 Jambo51 is offline
                                      Glory To Arstotzka
                                         
                                        Join Date: Jun 2009
                                        Gender: Male
                                        Nature: Quiet
                                        Posts: 732
                                        Quote:
                                        Originally Posted by galooloo View Post
                                        In Jambo's DirectSound voices per moment extention he said that the maximum for FR/LG/E is 12 DirectSound voices per moment and 7 in R/S. If you will choose a higher number, the game will probably freeze, crash, slow down etc.

                                        So is it possible to extend the limit using an ASM code?
                                        It's tied to the way that the IWRAM is used, so not without a huge overhaul of the engine, and even if you did, you could only gain 4 extra channels (not tracks).

                                        In all the GBA games, the max number of tracks is 10. The max number of channels is what you're changing.
                                        __________________
                                        Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
                                        Reply With Quote
                                          #375    
                                        Old September 5th, 2013 (4:15 PM).
                                        GoGoJJTech's Avatar
                                        GoGoJJTech GoGoJJTech is offline
                                        (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
                                         
                                        Join Date: Nov 2012
                                        Location: Earth
                                        Age: 19
                                        Gender: Female
                                        Nature: Jolly
                                        Posts: 2,475
                                        Quote:
                                        Originally Posted by Jambo51 View Post
                                        It's tied to the way that the IWRAM is used, so not without a huge overhaul of the engine, and even if you did, you could only gain 4 extra channels (not tracks).

                                        In all the GBA games, the max number of tracks is 10. The max number of channels is what you're changing.
                                        The max is NOT 10 as ipatix and I were able to make it 16. http://www.pokecommunity.com/showpost.php?p=7648563&postcount=1
                                        __________________
                                        I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
                                        The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
                                        Romhack.me Profile - Pokecommunity Profile - Youtube Channel

                                        Support me at my site!
                                        Pokémon Platinum Red and Blue
                                        Reply With Quote
                                        Reply

                                        Quick Reply

                                        Join the conversation!

                                        Create an account to post a reply in this thread, participate in other discussions, and more!

                                        Create a PokéCommunity Account

                                        Sponsored Links
                                        Thread Tools

                                        Posting Rules
                                        You may not post new threads
                                        You may not post replies
                                        You may not post attachments
                                        You may not edit your posts

                                        BB code is On
                                        Smilies are On
                                        [IMG] code is On
                                        HTML code is Off

                                        Forum Jump


                                        All times are GMT -8. The time now is 11:23 PM.