Skilled player (1787)
Joined: 9/17/2009
Posts: 5014
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Pokota wrote:
We have the Folio Bruti addresses; do we have the addresses for the Folio Magi and Folio Triplicus as well? I'd prefer not to duplicate work already done if I can avoid it (I'm putting together a "casual" 100% helper/hud script; everything I need beyond the Folios I can find from simple memory searching)
Are you trying for 100%? Good luck! I never thought of getting those addresses, since unlike the 1st game, cards aren't as used during the run.
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
Of the three, the Folio Magi would probably be the easiest for me to find independently since the game tracks up to 9 copies of the same card (I think it stops at 9?), so all I have to do is buy a zillion chocolate frogs and see what addresses respond. If the Folios Bruti and Triplicus follow pokedex rules then the "seen but not scanned" list should be somewhere near the addresses already used for Bruti (Triplicus might be near Magi? But I can probably pin down the range for Triplicus just by bouncing between save states since Merlin and Morgana decks give different starting combos) Ideally I'd just reverse-engineer the in-game overview pages for the three folios but my ASM-fu is not that great. by which I mean it's non-existent.
Adventures in Lua When did I get a vest?
Skilled player (1787)
Joined: 9/17/2009
Posts: 5014
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Pokota wrote:
Of the three, the Folio Magi would probably be the easiest for me to find independently since the game tracks up to 9 copies of the same card (I think it stops at 9?), so all I have to do is buy a zillion chocolate frogs and see what addresses respond. If the Folios Bruti and Triplicus follow pokedex rules then the "seen but not scanned" list should be somewhere near the addresses already used for Bruti (Triplicus might be near Magi? But I can probably pin down the range for Triplicus just by bouncing between save states since Merlin and Morgana decks give different starting combos) Ideally I'd just reverse-engineer the in-game overview pages for the three folios but my ASM-fu is not that great. by which I mean it's non-existent.
Probably there's seen, not scanned addressees. Once you found one of them, I'm absolutely sure the rest are near each other. Probably should use System Bus for RAM search, since the original game at least uses 0XFF++ region that is missed in WRAM.
Skilled player (1787)
Joined: 9/17/2009
Posts: 5014
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Pokota wrote:
Of the three, the Folio Magi would probably be the easiest for me to find independently since the game tracks up to 9 copies of the same card (I think it stops at 9?), so all I have to do is buy a zillion chocolate frogs and see what addresses respond. If the Folios Bruti and Triplicus follow pokedex rules then the "seen but not scanned" list should be somewhere near the addresses already used for Bruti (Triplicus might be near Magi? But I can probably pin down the range for Triplicus just by bouncing between save states since Merlin and Morgana decks give different starting combos) Ideally I'd just reverse-engineer the in-game overview pages for the three folios but my ASM-fu is not that great. by which I mean it's non-existent.
I was asked to find out what drops certain cards. I decided to start documenting this game more: https://docs.google.com/spreadsheets/d/1gRnyF76VBs2jN3O-096Suhn961rbiCTRHbF9TVqTfik/edit?usp=sharing I documented the following so far: 1. Every single area, and their npcs that can appear. 2. Every single NPC, and their HPs. 3. Folio Magi addresses Folio Magi starts from 0x6C4D to 0x6CB1 WRAM. You cannot find them in System Bus. Change 0xCE38 in System Bus to get infinite sickles to buy stuff. Brunti starts from 0xCE4B to 0xCE56 in System Bus. I do not know why that isn't in WRAM like the others.
Skilled player (1787)
Joined: 9/17/2009
Posts: 5014
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Information on drops These are the NPCs, their HP, and their drops
ID Name HP Item ID Item Name
0 Harry Student Clothes NA NA NA
1 Harry Casual Clothes NA NA NA
2 Ron Student Clothes NA NA NA
3 Ron Casual Clothes NA NA NA
4 Hermonie NA NA NA
5 Professor Lockhart (Team) NA NA NA
6 Harry with Sword NA NA NA
7 Bat 18 145 Pepper Up Potion
8 Fruit Bat 35 142 Wiggenweld Potion
9 Mortis Bat 40 144 Antidote
10 Toaster 22 149 Every Flavor Beans
11 Spintronix EggBeater 16 142 Wiggenweld Potion
12 Zephyrmaster 20 145 Pepper Up Potion
13 Splashmaster 2000 18 149 Every Flavor Beans
14 Desk Lamp 19 150 Pumpkin Pasties
15 Vacuum 24 142 Wiggenweld Potion
16 Garden Gnome 27 252 Wizard Card 1
17 Armor 80 147 Revive Potion
18 Footman 100 252 Wizard Card 1
19 Attic Ghoul 35 148 Anti-Paralysis Potion
20 Pixie 39 148 Anti-Paralysis Potion
21 Willow Branch 35 143 Wiggenweld Grand Potion
22 Flobberworm 30 146 Grand Pepper Up Potion
23 Flesh Eating Slugs 35 252 Wizard Card 1
24 Venomous Tentacular 180 148 Anti-Paralysis Potion
25 Baby Mandrake 80 143 Wiggenweld Grand Potion
26 Horklumps 51 142 Wiggenweld Potion
27 Loose Hand 50 145 Pepper Up Potion
28 River Troll 70 142 Wiggenweld Potion
29 Pheasant 50 252 Wizard Card 1
30 Ruby Firecrab 80 143 Wiggenweld Grand Potion
31 Snake 45 142 Wiggenweld Potion
32 Wasp 43 146 Grand Pepper Up Potion
33 Green Tree Frog 38 145 Pepper Up Potion
34 Forest Troll 100 142 Wiggenweld Potion
35 Angry Skull 50 143 Wiggenweld Grand Potion
36 Black Widow 20 252 Wizard Card 1
37 Brown Recluse 35 142 Wiggenweld Potion
38 Goblin 50 253 Wizard Card 2
39 Giant Rat 53 142 Wiggenweld Potion
40 Rat 15 145 Pepper Up Potion
41 Bullfrog 60 142 Wiggenweld Potion
42 Basilisk 750 254 Wizard Card 3
43 Aragog 390 147 Revive Potion
44 ?? (Willow boss) 105 253 Wizard Card 2
45 Doxy Drone 40 252 Wizard Card 1
46 Bowtruckle 50 142 Wiggenweld Potion
47 Snail 40 143 Wiggenweld Grand Potion
48 Gytrash 70 142 Wiggenweld Potion
49 Bunny 23 253 Wizard Card 2
50 Fire Salamander 30 146 Grand Pepper Up Potion
51 Malfoy 300 253 Wizard Card 2
52 Crabbe 250 143 Wiggenweld Grand Potion
53 Goyle 275 146 Grand Pepper Up Potion
54 Duel Club 1 40 150 Pumpkin Pasties
55 Duel Club 2 100 149 Every Flavor Beans
56 Duel Club 3 200 252 Wizard Card 1
57 Duel Club 4 350 142 Wiggenweld Potion
58 Duel Club 5 400 146 Grand Pepper Up Potion
59 Duel Club 6 550 143 Wiggenweld Grand Potion
60 Duel Club 7 750 147 Revive Potion
61 Professor LockHart 500 254 Wizard Card 3
62 Minor Dragonfly 20 149 Every Flavor Beans
63 Large Spider 55 142 Wiggenweld Potion
64 Knight 100 253 Wizard Card 2
65 Crusader 80 143 Wiggenweld Grand Potion
66 Swordsman 90 143 Wiggenweld Grand Potion
67 Squire 120 143 Wiggenweld Grand Potion
68 Cavalier 100 143 Wiggenweld Grand Potion
69 Paladin 110 142 Wiggenweld Potion
70 Spectre Bat 70 146 Grand Pepper Up Potion
71 Oaken Bowtruckle 76 142 Wiggenweld Potion
72 Cursed Skull 66 253 Wizard Card 2
73 Executive Desk Lamp 31 150 Pumpkin Pasties
74 Doxy Queen 142 Wiggenweld Potion
75 Imperial Dragonfly 40 252 Wizard Card 1
76 Tornado 22 142 Wiggenweld Potion
77 Frost Salamander 80 143 Wiggenweld Grand Potion
78 Emerald Firecrab 143 Wiggenweld Grand Potion
79 Sapphire Firecrab 105 147 Revive Potion
80 Briar Toad 80 253 Wizard Card 2
81 Giant Albino Rat 60 144 Antidote
82 Giant Plague Rat 70 144 Antidote
83 Giant Phantom Rat 80 146 Grand Pepper Up Potion
84 Dark Goblin 143 Wiggenweld Grand Potion
85 Plague Rat 30 252 Wizard Card 1
86 Albino Rat 40 146 Grand Pepper Up Potion
87 Phantom Rat 65 143 Wiggenweld Grand Potion
88 Firetrail Snail 70 253 Wizard Card 2
89 Flailtail Snail 100 146 Grand Pepper Up Potion
90 Spitting Snake 70 143 Wiggenweld Grand Potion
91 Whitetail Spider 58 144 Antidote
92 Cocoon Spider 90 143 Wiggenweld Grand Potion
93 Funnel Web Spider 40 146 Grand Pepper Up Potion
94 Panic Spider 55 253 Wizard Card 2
95 Redback Spider 80 142 Wiggenweld Potion
96 Tarantula Hawk 60 144 Antidote
97 Wild Rooster 70 146 Grand Pepper Up Potion
98 Phoenix 142 Wiggenweld Potion
99 Crash 255 NA
100 Harry dying NA NA NA
These are the cards from Wizard Card 1 group.
Merlin Deck Morgan Le Fay Deck
Elladora Ketteridge Archibald Alderton
Glover Hipworth Elladora Ketteridge
Ignatia Wildsmith Sacharissa Tugwood
Sacharissa Tugwood Balfour Blane
Balfour Blane Felix Summerbee
Felix Summerbee Greta Catchlove
Greta Catchlove Dorcas Wellbeloved
Dorcas Wellbeloved Crispon Cronk
Crispon Cronk Ethelred the Ever-Ready
Ethelred the Ever-Ready Xavier Rastrick
Beatrix Bloxam Fulbert the Fearful
Alberta Toothill Wendelin the Weird
Dymphna Furmage Tilly Toke
Fulbert the Fearful Havelock Sweeting
Wendelin the Weird Flavius Belby
Tilly Toke Justus Pilliwickle
Havelock Sweeting Norvel Twonk
Gulliver Pokeby Gulliver Pokeby
Glenda Chittock Perpetua Fancourt
Cassandra Vablatsky Cassandra Vablatsky
Grogan Stump Blenheim Stalk
Burdock Muldoon Gondoline Oliphant
Gondoline Oliphant Montague Knightley
Derwent Shimpling Derwent Shimpling
Chauncey Oldridge Chauncey Oldridge
Wilfred Elphick Wilfred Elphick
Bridget Wenlock Miranda Goshawk
Miranda Goshawk Hengist of Woodcroft
Hengist of Woodcroft Daisy Dodderidge
Daisy Dodderidge Albus Dumbledore
Kirley Duke Donaghan Tremlett
Myron Wagtail Kirley Duke
Orsino Thruston Orsino Thruston
Heathcote Barbary Merton Graves
Merton Graves Devlin Whitehorn
Gwenog Jones Dunbar Oglethorpe
Leopoldina Smethwyck Andros the Invincible
Roland Kegg Uric the Oddball
Mirabella Plunkett Thaddeus Thurkell
These are the cards from the Wizard Card 2 group:
Merlin Deck Morgan Le Fay Deck
Gregory the Swarmy Gaspard Shingleton
Glanmore Peakes Gregory the Swarmy
Gifford Ollerton Laverne DeMontmorency
Jocunda Sykes Glanmore Peakes
Merwyn the Malicious Gifford Ollerton
Edgar Stroulger Jocunda Sykes
Newt Scamander Merwyn the Malicious
Adalbert Waffling Yardley Platt
Elfrida Clagg Edgar Stroulger
Almerick Sawbridge Oswald Beamish
Artemisia Lufkin Newt Scamander
Gunhilda of Gorsemoor Alberic Grunnion
Mungo Bonham Elfrida Clagg
Godric Gryffindor Almerick Sawbridge
Salazar Slytherin Beaumont Marjoribanks
Helga Hufflepuff Mungo Bonham
Rowena Ravenclaw Godric Gryffindor
Gideon Crumb Helga Hufflepuff
Celestina Warbeck Rowena Ravenclaw
Josecelind Wadcock Gideon Crumb
Roderick Plumpton Herman Wintringham
Herpo the Foul Cyprian Youdle
Lord Stoddard Withers Lord Stoddard Withers
Bertie Bott Bertie Bott
These are the cards from Wizard Card 3 group.
Merlin Deck Morgan Le Fay Deck
Honouria Nutcombe Paracelsus
Quong Po Honouria Nutcombe
Carlotta Pinkstone Quong Po
Mopsus Morgan le Fay
Merlin Cornelius Agrippa
Harry Potter Harry Potter
Cliodne Cliodne
Musidora Barkwith Queen Maeve
Circe Bowman Wright
Skilled player (1787)
Joined: 9/17/2009
Posts: 5014
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Some discoveries by others on HP discord server: 1. https://www.youtube.com/watch?v=uDO0BCN_vbs Flo203 discovered that there is actually 2 different stocks of cards in stores per deck. This is based on RNG. 2. https://discord.com/channels/352025325942734848/557477077612494848/1363799681175392397
Hey everyone, it was found that using Bizhawk for HP2GBC seems to save time on text mashing (my assumption is less lag), the exact amount it saves is unknown but it seems to be between 10 to 15 seconds throughout the run. Tegron mentioned this version of Gambatte https://github.com/pokemon-speedrunning/gambatte-speedrun/releases and after testing, this seems to be way more accurate than using Bizhawk and text mashing seemed to be about the same as console. This version will now be required for 1GBC and 2GBC runs, any other emulator is banned, all the existing emulator runs on the boards will get a 15 seconds penalty, 1GBC does not get a penalty since text mashing seemed to be the same as console. (GBA will still use Bizhawk for emulator runs and DS DeSmuME until a more accurate version is found)
I am uncertain of the cause, but I do know that GBC mode is slightly faster than GBA mode. You can even tell the 2 apart due to GBA being brighter. Not sure if that is the case. 3. Flo203 discovered 2 different ways to change Harry's deck. 0E3D in WRAM is deck. 0 is Merlin. 1 is Morgan. Method 1: https://www.youtube.com/watch?v=ijCH76WnzmM Select Merlin deck (0) Get Harry Potter Card from Lockheart. Unlock all spells. Go to Filch's office. Unlock Skurge again. This will change deck id to Morgan (1). This does not change if your deck was already at Morgan. Method 2: Beat the game once to get Harry. Unlock all spells. Go to the dueling room and fight Malfoy to unlock expeliarmus again. If your deck was Merlin (0), it becomes Morgan (1). If your deck was Morgan (1), it becomes some other thing (3). I documented each area's card, along with deck. https://docs.google.com/spreadsheets/d/1gRnyF76VBs2jN3O-096Suhn961rbiCTRHbF9TVqTfik/edit?gid=619101748#gid=619101748 The main 2 cards preventing a faster 100% are Card 69: Queen Maeve (Morgan deck) Card 76: Musidora Barkwith (Merlin deck) Those are only dropped by card 3 NPCs, which I recorded as Lockheart and Basilisk using cheats. However, it was reported that they couldn't get Basilisk to drop anything during normal gameplay, since the results screen doesn't appear. This means normally, a 100% run would at the very least reach up to Lockheart twice. Deck 3 has Queen Maeve appear at 5th Floor Hallway, but it really isn't useful, since at that point in the run, you will have to be at your 2nd playthrough to unlock expeliarmus again. If your 1st playthrough was Morgan, then you would already have Queen Maeve. If your 1st playthrough was Merlin, then your 2nd playthrough must be at Morgan anyways. You can skip the footman boss at Gringotts by leaving Gringotts, then re-entering again with select right before you enter. This allows you to walk past the boss. You would be fighting Willow at level 1 however.
YoshiRulz
Any
Editor, Emulator Coder
Joined: 8/30/2020
Posts: 154
Location: Sydney, Australia
jlun2 wrote:
Hey everyone, it was found that using Bizhawk for HP2GBC seems to save time on text mashing (my assumption is less lag), the exact amount it saves is unknown but it seems to be between 10 to 15 seconds throughout the run. Tegron mentioned this version of Gambatte https://github.com/pokemon-speedrunning/gambatte-speedrun/releases and after testing, this seems to be way more accurate than using Bizhawk and text mashing seemed to be about the same as console. [...]
I am uncertain of the cause, but I do know that GBC mode is slightly faster than GBA mode. You can even tell the 2 apart due to GBA being brighter. Not sure if that is the case.
Gambatte-Speedrun is the very same as our Gambatte core, so unless they'd been systematically switching to GBHawk for some reason (or there's a host framerate difference?), I suspect you're right. In any case they might be interested in CPP's newer iteration of a speedrunners' emulator.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Hey look buddy, I'm an engineer. That means I solve problems. Not problems like "What is software," because that would fall within the purview of your conundrums of philosophy. I solve practical problems. For instance, how am I gonna stop some high-wattage thread-ripping monster of a CPU dead in its tracks? The answer: use code. And if that don't work? Use more code.
Skilled player (1201)
Joined: 7/18/2016
Posts: 117
Location: United States
Is there an HP2 100% TAS in the works? If so, that is really, really exciting! I put so many hours into this game as a kid and was never able to fill the Folio Magi completely.
Skilled player (1787)
Joined: 9/17/2009
Posts: 5014
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Winslinator wrote:
Is there an HP2 100% TAS in the works? If so, that is really, really exciting! I put so many hours into this game as a kid and was never able to fill the Folio Magi completely.
I have no idea even how to approach. While one can just follow the 100% RTA route, I finally got some breakthrough regarding pressing select right before leaving dormitory. By manipulating values at CB31, CB32, and CB49, CB4A, CB4B, I can get different scripts to run. I can skip ahead story wise, and unlock spells early. I need to check thousands of values manually to find what does what however. Edit: https://tasvideos.org/UserFiles/Info/638856191736840479 Bizhawk 2.10 used Proof of concept that select bug can be used to skip to near the end of the game, if you could somehow beat the Basilisk. This glitch has 3 steps 1. Reset the game, then wait at the opening menu so that CB49, CB4A, CB4B are FA 80 FC 2. Enter the game, then select 6 items in store. This changes CC0B, CC0C, CC0D to 7F 00 06 3. Select bug at the dormitory by basically pressing select and leaving the dorm at the same time. This causes CB2C to decrement by 3. Do this until it's value is 241, or F1. This means the script now points to addess CC0B, CC0C, CC0D. 4. Select bug one more time, then wait. CB2C will now increment by 3 repeatedly, while overwriting anything it points to with 7F 03 06. We need it to go through everything at least once, to glitch up text box. Then end dialogue after it reaches 130, or 0x82, so it is at the middle. 5. Select bug 44 more times, so it loops back to 254, an offset of 1. Due to the text bug, the music will speed up every single attempt, increasing the amount of lag. You need to either get an item, or pause, to reset the music speed every now and then. 6. Do the select bug 69 times until CB2C is at 47, or 0x2F. This should now be pointing at CB49, CB4A, CB4B. 7. Select bug one more time, then wait. Be sure to use the start menu rather than select, since the lack of lag means the values run down faster. CB31, CB32 should now change to 90 7A, then decrement by 1 every frame. Wait until it reaches 73 FD 00, then leave the start menu. 8. Do the select bug 7 more times until it reaches 23, or 0x17. 9. Select bug one more time, using start menu. Now the game would run the script starting at "Well, it didn't work! Everyone's still here! And when the Mandrake potions are". 10. After "and come down here. I knew you would follow", CB31 will change to C9 62. Normally, this is where you softlock. However, due to text bug from step 4, after 51,554 frames, (or C9 62), you will advance the script. 11. After Tom says "ha ha!", CB31 will change to C9 62 again. Wait another 51,554 frames. Then after some dialogue, the Basilisk fight will start. If you could somehow beat them, you basically skip most of the game. Edit 2: Script that basically goes and briefly checks values. Be sure to stop at the frame before CB2C changes Download hpcs script check.lua
Language: lua

memory.usememorydomain("System Bus") function waitframe(frame) while (frame >= 0) do emu.frameadvance() frame = frame-1 end end --[[ Quickly record select bug story changes Set CB2C to 23 Go to the frame before event triggers 1. Set CB31, CB32, CB33 with the 3 values to check; CB33 will be the one changing 2. Advance 25 frames 3. Check if story changed 4. Repeat 255 times Checked so far F0FF00 8EFF00 84FF00 --nothing at all? 80FF00 --might be battle here? 7EFF00 7CFF00 7BFF00 79FF00 Found 85FF00 2 at 69 83FF00 2 at 69 82FF00 229 3 times, 223 2 times, 96 3 times, 100 8 times 81FF00 53 4 times 7FFF00 193 9 times, 209 once 7DFF00 0, twice at 91, 01 7AFF00 33 twice 00F0FF - 240 at F8, 7 at 1F 00EFFF - 62 at FA, 12 at F8, 40 at E6, 221 at D3 00EEFF - 51 at F0, 0 at 1F 00CDFF - 62 at F9, 221 at F3, 205 at EC CE, 45 at 28 00CCFF - 165 at E8, D0, 0 at B3 93, 21 at 35, 7 at 1F 00CBFF - 165 at E8, D0, 0 at B3 93, 21 at 35, 7 at 1F 00CAFF - 0 at FB, 62 at F9, 169 at DD, 2225 at CE, 21 at 35, 45 at 28, 183 at 03 00C9FF - 165 at D0, 7 at 1F 00C8FF - 12 at FA 00C7FF - 62 at F9, 169 at DD, 107 at D2, 45 at 28, 183 at 03 00C6FF - 165 at D0, 0 at B9, 99, 2B, 7 at 1F 00C5FF - 12 at FA 00C4FF - 62 at F9, 107 at D2, 224 at B9, 99, 45 at 28 00C3FF - 165 at D0, 7 at 1F, 51 at 18 00C2FF - 12 at FA, 15 at 22 00C1FF - 62 at F9, 107 at D2, 45 at 28 00C0FF - 221 at E8, 7 at 1F 00BFFF - 12 at FA 005EFF - 0 at 17 005DFF - 24 at EA, 221 at E9, 32 at 20 005CFF - NA 005BFF - 21 at 35 005AFF - 24 at EA, 221 at E9, E6, 236 at C8, 32 at 20, 1 at 0F 0059FF - 0 at A9, 89, 5 at 1B 0058FF - 21 at 35 0057FF - 24 at EA, 221 at E6, 236 at C8, 1 at 0F 0024FF - 166 at D8, 0 at 34 0023FF - 5 at DD 0022FF - 221 at F2 0005FF - 36 at AF, 8F, 7 at 20 0004FF - 9 at C4, 21 at 35 0000FF - 21 at 35 ]]-- console.clear() local slot = 2 memory.writebyte(0xCB2C,22) --[[from 2nd pass local start = 0x85FF00 local l_end = start - 0xFF00 local decrement = -0x100 ]]-- --from 1st pass local start = 0x00BEFF local l_end = 0 local decrement = -0x1 local story = 0 console.log(string.format("START AT %06X", start)) memory.write_u24_be(0xCB30,start) function bot(save) savestate.saveslot(save) for i = start, l_end, decrement do memory.write_u24_be(0xCB30,i) waitframe(25) story = memory.readbyte(0x6CC8,"WRAM") if story ~= 13 then --current story at this point is 13 console.log(string.format("STORY CHANGED TO %d AT %06X", story, i)) elseif story == 66 then console.log(string.format("STORY CHANGED TO %d AT %06X", story, i)) break end savestate.loadslot(save) end end bot(slot) client.pause()