Post subject: Harry Potter and the Prisoner of Azkaban
Joined: 5/31/2013
Posts: 39
Just started a TAS of this game, but having trouble finding any memory addresses in the game, and working out which ones indicate critical hits
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
If it helps, the X/Y addresses (for the very first room, at least) are in "Combined WRAM" in BizHawk, and they are 00B944 - 4 byte unsigned - X 00B948 - 4 byte unsigned - Y Unfortunately, every time I go up and down stairs, the address changes by -0x128, so it becomes something like 00B948 -> 00B820 -> 00B6F8 -> 00B5D0 -> 00B380 00B4A8 is skipped for some reason. Not very informative, sorry. Never played this game. Edit: I think I found how it moves. All in Combined Wram: 042118 043358 043380 All seem to point at an address minus 0x02000000 near the X/Y values. Uh...In fact here's a lua script that displays X/Y at the very top, plus the pointer just in case Download Harry.lua
Language: lua

memory.usememorydomain("Combined WRAM") local Harry = {ptr = 0x042118, x = 0x000000, y = 0x000000} function update() local char = memory.read_s32_le(Harry.ptr) - 0x02000000 Harry.x = char + 0x2C Harry.y = char + 0x30 end while true do local pointer = memory.read_s32_le(Harry.ptr) if (pointer ~= Harry.x-0x2c+0x02000000 and pointer ~= 0) then --this will happen if changed rooms or just started script update() --placing this here as to not lag my computer :P end gui.text(0,0,string.format('%.6f',memory.read_u32_le(Harry.x)/65536.0)..","..string.format('%.6f',memory.read_u32_le(Harry.y)/65536.0)) gui.text(0,90,"Pointer: 0x"..bizstring.hex(memory.read_s32_le(Harry.ptr))) --debug emu.frameadvance() end
Tested in BizHawk 1.11.6. Please post if something goes wrong.
Active player (434)
Joined: 2/5/2012
Posts: 1690
Location: Brasil
if the game is similar to predecessors,then you can look for information about these things in the older game too
TAS i'm interested: megaman series: mmbn1 all chips, mmx3 any% psx glitched fighting games with speed goals in general
Joined: 5/31/2013
Posts: 39
Lua script works perfectly, still trying to find what advances the RNG to manip things like criticals, damage enemies give, turn order in battles and enemy placement on overworld maps. Also, I don't think this game follows on from the GBC games in terms of RNG, as they run slightly differently in terms of battles
Active player (434)
Joined: 2/5/2012
Posts: 1690
Location: Brasil
StarrlightSims wrote:
Lua script works perfectly, still trying to find what advances the RNG to manip things like criticals, damage enemies give, turn order in battles and enemy placement on overworld maps. Also, I don't think this game follows on from the GBC games in terms of RNG, as they run slightly differently in terms of battles
. oh no,i meant the gba games which came before this,i'm aware the gbc games are rpg while this is an action game,but there's also a sorcerer stone for gba,for example,and it has been TASed: http://tasvideos.org/4564S.html
TAS i'm interested: megaman series: mmbn1 all chips, mmx3 any% psx glitched fighting games with speed goals in general
Joined: 5/31/2013
Posts: 39
This game actually follows on from the gbc games, and is an RPG in the same style, so it's completely different from the first two gba games
Active player (434)
Joined: 2/5/2012
Posts: 1690
Location: Brasil
i just assumed they would go with the same formula,sorry
TAS i'm interested: megaman series: mmbn1 all chips, mmx3 any% psx glitched fighting games with speed goals in general
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Ok, from what I gathered, the damage is "set" based on what you do; say casting Flippendo causes a rat to miss on their turn. Well, no matter how much delay you add before you use flippendo, that attack will still cause the rat to miss. Same with other spell/action outcomes. I haven't figured out the RNG yet, but I suspect it may be possible to delay before a battle starts (manipulate everything before hand). Also this has nothing much to do with the run, but apparently 003340 in Combined Wram is dialogue/spell text. Just posting that in case it is ever need it. Edit: 04339C 0433B8 Both in Combined WRAM. No idea what it does, but freezing them makes your partner suddenly walk off the screen. Battle Addresses - 2 bytes Combined Wram 0328E0 - First turn's ID 032928 - Second turn's ID 032970 - Third turn's ID 0329B8 - Fourth turn's ID 032A00 - Fifth turn's ID It's not the RNG, but at least using these addresses it would help immediately knowing what the order is. Casting Informas using cheats for example:
Joined: 5/31/2013
Posts: 39
So essentially the entire battle is determined before it even starts?
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
StarrlightSims wrote:
So essentially the entire battle is determined before it even starts?
Seems like it. Also I found out that the battle ID's also change between locations; by the time I get to the train the addresses are different. I suspect the RNG (havent found yet) may be like that too, but I'm not sure.
Joined: 5/31/2013
Posts: 39
So just done some further testing into the RNG for the game, and what I found was that if you press New Game on the same frame every time, no matter what actions/flags/movement you do afterwards, and no matter how many frames pass, the Monster Book fight is exactly the same, so it seems that RNG is set from pressing New Game, still need to do more testing though.
Joined: 5/31/2013
Posts: 39
After some recent testing, the RNG in this game finally seems to make sense. The way RNG seems to work is that the frame you press Start on the first main menu determines two seeds that the game can choose between, and then the frame on which you select Load Game/New Game then determines which of those 2 seeds the game selects. Therefore, if we press start on the right frame, we should be able to completely predict what will happen in the battle. In the overworld, the only thing that seems to affect the RNG is the number of frames that the random enemies are on screen. In battle, the only things that effect RNG are which spells you choose each turn, and opening the help menu. We can open the help menu for the same amount of time by holding down a and b, so it closes as soon as it opens. So, it's a case of finding a good seed and then working out a battle from that seed. Now it's a case of finding good seeds, which is going to take forever.
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
That's nice! Is that for just the first battle, or does that apply to that battle + rest of the game? Ie. RNG never changes after pressing start at new/load game?
Joined: 5/31/2013
Posts: 39
It works that way for the first battle, and then after that you can either manipulate it using the encounters on screen, or if you reset the game you can actually reset the seed, so by resetting just before a boss battle, you can actually manipulate the RNG, which is helpful for both TAS and RTA.
Joined: 5/31/2013
Posts: 39
Getting back into working on this, trying to find the point in the data where it says whether an attack will be a critical hit, but struggling to use RAM watch to actually find the section, seems like every time I think I have the right part its not, if anyone has any experience with using RAM watch it''d be greatly appreciated https://drive.google.com/file/d/1Vt7qiW6tHYKxhrwb1KsWPL7TCzqf20oG/view?usp=sharing Here's a state if anyone feels like messing around with it, the fight starts with a non-crit, but if you flash the help menu twice (Press A whilst holding B), it makes it a crit
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
About your savestate, as soon as I load it in 2.4, it goes into battle, then immediately resets. Which BizHawk version did you use, and if it's also 2.4 can you please upload a new one? Edit: In 2.3, got the message: Core rejected the state. This appeared to be the first battle, so I can probably go try going there. I can see what you meant by the help menu now; managed to get NPC to miss as well; nice find! 0x274A in IWRAM is damage dealt. A tracelog of that reveals 0x5574, 0x5580, 0x5584 is changed before 0x274A is determined. Freezing 0x5580 appeared to make it constant; eg. freezing 0x5580 to 33564852 made the book always miss for me so far. Maybe the RNG? It appears to have an effect on other battles as well. That value also changed during the title screen because of the wand selector's sparkles when moving through options. That probably explained why the RNG advanced in the help screen; the wand's sparkle effect is random.