1 2
5 6
Skilled player (1742)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
jlun2 wrote:
Just posting it here so hopefully more attention: Link to video I hope some gamebreaking glitch appears for this.
Now that I know the addresses for items/card combos, I rechecked the video. https://tasvideos.org/UserFiles/Info/638175722463215003 This was the input file for it, using BizHawk 1.11.5. In addition to giving me those glitched items, it also affected the card combo area in WRAM 0x6570 to 0x6576 This allowed me to get full enchantment before even beating the game: I mentioned 2 of the card combos weren't obtainable; I think they can be obtained now. Edit: Used BizHawk 2.8 Glitch item "The Boomslang is a venomous African" obtained: https://cdn.discordapp.com/attachments/698993369321308240/1099207356308525157/HP1_v4.bk2 All spells unlocked at lake: https://cdn.discordapp.com/attachments/698993369321308240/1099211279761145856/HP1_v4.bk2 Bot used:
memory.usememorydomain("System Bus")
local hp1_data = require 'hp1 data'
local Addresses = hp1_data.Addresses

local text
local read8
local read16
local read32
console.clear()
if vba then
	text = gui.text
	read8 = memory.readbyteunsigned
	read16 = memory.readwordunsigned 
	read32 = memory.readlongunsigned
else
	text = gui.pixelText
	memory.usememorydomain("System Bus")
	read8 = memory.read_u8
	read16 = memory.read_u16_le 
	read32 = memory.read_u32_le
end
local save_outer = 1
local save_inner = 2
function waitframe(frame)
	local game_state = read8(Addresses.game_state) % 128
	local story = read8(Addresses.story_flag, "WRAM")
	
	while (frame >= 0) do
		text(0, 10,'State: '.. game_state)	--Game state for debugging
		text(0, 17,'Story: '.. story)	--Game state for debugging
		emu.frameadvance()
		frame = frame-1
	end
end


function bot()
	local cond_outer = false
	local cond_inner = false
	local is_pause = false
	local changed = false
	local frame_start_inner = emu.framecount()
	local frame_dif_outer = 0	--difference between this frame and start frame
	local frame_dif_inner = 0	--difference between this frame and start frame
	local item_start = memory.hash_region(Addresses.item_start, Addresses.item_end - Addresses.item_start, "WRAM")
	local card_start = memory.hash_region(Addresses.card_start, Addresses.card_combo_end - Addresses.card_start, "WRAM")	--merge combos/cards
	local spell_start = memory.hash_region(Addresses.spells, 3)
	
	local item_now = ""
	local card_now = ""
	local spell_now = ""
	savestate.saveslot(save_inner)
	repeat 
		local frame_now_inner = emu.framecount()
		local game_state = read8(Addresses.game_state) % 128
		local story = read8(Addresses.story_flag,"WRAM")
		text(0, 10,'State: '.. game_state)	--Game state for debugging
		
		if (frame_dif_inner ~= (frame_now_inner - frame_start_inner)) then	--Check just in case
			savestate.saveslot(save_inner)
		end
			--1st menu, selecting Item
		-- joypad.set({Down=1})
		-- emu.frameadvance()
		joypad.set({A=1})
		emu.frameadvance()
		waitframe(10)
		item_now = memory.hash_region(Addresses.item_start, Addresses.item_end - Addresses.item_start, "WRAM")
		card_now = memory.hash_region(Addresses.card_start, Addresses.card_combo_end - Addresses.card_start, "WRAM")	--merge combos/cards
		spell_now = memory.hash_region(Addresses.spells, 3)
		frame_dif_inner = frame_dif_inner + 1
		game_state = read8(Addresses.game_state) % 128
		is_pause = (game_state ~=29 and game_state ~= 30) --and (story ~= 3)
		item_changed = item_now ~= item_start
		card_changed = card_now ~= card_start
		spell_changed = spell_now ~= spell_start
		if item_changed == true then
			console.log("ITEMS CHANGED")
			console.log(emu.framecount())
			-- changed = true
		end
		if card_changed == true then
			console.log("CARD CHANGED")
			changed = true
		end
		if spell_changed == true then
			console.log("SPELL CHANGED")
			changed = true
		end
		if changed == false then 
			savestate.loadslot(save_inner)
			emu.frameadvance()
		end
	until (frame_dif_inner > 250 or changed == true)

	-- client.pause()
	console.log("State:" .. read8(Addresses.game_state) % 128)
	console.log("Story:" .. read8(Addresses.story_flag,"WRAM"))
end

bot()
data:
local harry_potter_module = {}
harry_potter_module.Addresses = {
--WRAM, cant be found in System Bus outside bank swap
	yes = 0x607F,--item amount for "yes",
	item_start = 0x5FFA, --start, to 60FE
	item_end = 0x60FE, --start, to 60FE
	card_start = 0x650A,	--start, to 656E
	card_end = 0x656E,	--start, to 656E
	card_combo_start = 0x6570, --start, to 6576
	card_combo_end = 0x6576, --start, to 6576
	story_flag = 0x65D5,
	--System Bus
	monster = 
	{
		x = {0xC46A, 0xC50C, 0xC5AE},
		y = {0xC46D, 0xC50F, 0xC5B1},
		hp = {0xC4B8, 0xC55A, 0xC5FC}
	},
	deck_id = 0xCE03,	-- Which deck for names
	area_id = 0xCCEC,
	message_timer = 0xCD12,
	x = 0xCD30,
	y = 0xCD32,
	rng = 0xce04,
	boss_id = 0xCC05,
	spells = 0xCDFE,
	game_state = 0xFFD2,
	Start = 0xCAB8,
	-- Start = 0xC000,
	-- End_ = 0xC100
	End_ = 0xCB00
}
return harry_potter_module
Skilled player (1742)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
https://cdn.discordapp.com/attachments/352025773537755137/1101475665359945808/HPSS_Card.tasproj I checked the timing for the lightning bug using default combos. Gulliver Pokeby's deck is the fastest so far. The following combos do not flicker the screen: Sickle Seek Snitch Streak The following combos causes flicker: Deflect Poison Immunity Summon Umbrella Conjure Snack Drone Tempest
Skilled player (1742)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
jlun2 wrote:
I know a way to jump to almost any address in System Bus: https://cdn.discordapp.com/attachments/698993369321308240/1097261539280560158/HP1_v4.bk2 1. buy a chocolate frog 2. get to the upper left of the stage by pressing start as you enter a boss fight 3. move left until 0xCABC is a value where your payload is located 4. pause the game, use frog by Right + A to jump to 0xC970, nop slide to CABB, which jumps to wherever 0xCABC pointed to 5. Credits I guess? Haven't gotten anything interesting except not crash. Crashes almost all the time however. The input file uses BizHawk 2.8. I can't figure out where to jump to do anything interesting yet; stuff such as item, card amounts, etc are all located in WRAM, so I don't know where else to go. If anyone knows, please help.
To prevent myself from accidentally losing it: https://cdn.discordapp.com/attachments/280808167993245707/1155706332301774869/HP1_v7.bk2 Sanqui realized using the Chocolate Frog puts you to WRAM bank 6, which is where items are located. They came up with a payload that took 47k sickles worth of items to setup, which gradually got bought down to 8k. Rather than use Hogwarts dungeon, I realized I can leave battles using "yes" item, so I warped to the forbidden forest to get OoB, then executed the payload to credits warp. It beats the game in 36,122 frames, or 10:02.03. I need to check something a bit more before submitting. https://cdn.discordapp.com/attachments/280808167993245707/1156653184710889542/HP1_v7.bk2 I was trying to improve it, and managed to get a whole bunch of glitched items without crashing.
Skilled player (1742)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Some discoveries: 1. It turns out that getting OoB from the troll in washroom doesn't mess with position address, so it can be used for ACE. This means RTA-wise, there's more items available for payload. 2. I investigated the stores. Weasley Twins Bargain stocks the following when you first arrive at Hogwarts: Superior Work Robe Superior Gloves Dragonclaw Gloves Superior Pointed Hat Lined Hat Fine Fettle Belt Stamina Belt Superior Boots Hardened Boots Copper Cauldron Brass Cauldron After one of the 5 classses post potions is done, it changes to Superior Work Robe Buckram Robe Dragonclaw Gloves Sorcerous Gloves Lined Hat High Hard Hat Stamina Belt Robust Belt Hardened Boots Brass Cauldron Silver Cauldron That means there's only a short opportunity to obtain Superior Gloves, Superior Pointed Hat, Fine Fettle Belt, Superior Boots. On the 2nd visit to Diagon Alley, Potage's Cauldrons stocks the following: Brass Cauldron Self-stirring Cauldron Madamn Malkin's stock the following: Leather Belt Plain Boots Superior Winter Cloak Nimble Gloves Superlative Hat Vigorous Belt Superlative Boots This makes it very difficult to stock them before you can't buy them again. I'm thinking duping money drops from blue turtle in 6th Floor Secret Hallway https://alpha.vgatlas.net/hp1/enemies/49 These drop 250-500 sickles per fight. 3. You can't sell Bastion Belts to stores. Wandwaving Gloves, Optimum Hat, Blizzard Cloak, Optimum Boots only appear as drop near the very end. 4. You can grind herbs by pausing right infront of respawn points for it. There's 16 herbs, so 16 bytes for payload. 5. 0E01 WRAM is recipies flag 6. 0DDF WRAM is minigames 7. House points are strange. It appears while there are certain points it awards all houses randomly, by the end, it is hardcoded so that either Ravenclaw would be ahead, or Hufflepuff. It doesn't seem possible for Slytherin to win. The shortest dialogue for any% no ACE would be to have Ravenclaw still be ahead after rewarded 170 points at the end.
Skilled player (1742)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
The current RTA 100% category allows ACE and no ACE. For ACE, the current route is:
Flo203 wrote:
so current WR was before troll warp and had to do Purple deck + Red deck both beat the game then Green deck dungeons warp and blue deck ended on first night after greathall ceremony
Then it was discovered that you can pick up cards before grabbing the wand. This allows you to get green deck's sole exclusive card, "Salazar Slytherin", by buying a chocolate frog, then hoping it gives you it.
Flo203 wrote:
This route beats the game once on Red deck, does troll warp on blue deck and on purple deck the last combo we need is also right after first night, and literally the only thing we need to collect from green deck is the card in the sweet shop (and also do infinite card glitch to get the cards from that deck) But now that we can get everything from green deck before selecting red deck we get to completely skip having to warp to troll on 3rd playthrough So old route was: 1st playthrough 1h20, 2nd playthrough 1h20, 3rd playthrough 11mins, 4th playthrough about 11mins as well This new route (assuming it works) is: 1st playthrough 1h20, 2nd playthrough 40mins, 3rd playthrough roughly 11mins maybe a bit more and no need for 4th playthrough 🙂 only thing that could improve this would be full ace on combo + minigames + cards + potion recipes purple blue are the long ones
So I got curious on if that's possible. Here's my notes on attempting to get all cards/combos using ACE. All in WRAM: Minigames = 0DDF Recipes = 0E01 Card 1 = 650A Card 100 = 656E Card combo 1 = 6570 Card combo 7 = 6576 I don't think it's feasible to get minigames/recipes using items (yet). However, it should be possible to at least get all cards and combos in 1 go. 1st payload attempt
3E 64 LD A, $64 100 cards, so use A as both the amount to give + loop. 62 Dragonskin Gloves at 3844, 100 Superior Gloves at 11,000
21 0A D5 LD HL, $D50A 33 Pointed Hats at 1914, 10 Superior Pointed Hats at 1250, 213 Lined Hats at 426,000
22 LDI [HL], A 34 Plain Work Robes at 2720
3D DEC A 61 Winter Cloaks at 9150
20 FC JRZ, $F01B can be modified to jump more, since gaps in items; 32 Leather Belts at 96, 236+ Fine Fettle Belts at 23,600+
3D DEC A change A to FF; 61 Plain Boots at 305
06 09 LD B, $09 6 Superior Boots at 540, 9 Hardened Boots at 4050
22 LDI [HL], A 34 Pack of Name Tags at 340
05 DEC B 5 Antidotes at 750
20 FC JRZ, $F022 can be modified to jump more, since gaps in items; 32 Potion Kit Bags at 320. At least 234+ Collapsible Cauldrons at 11,934+
0E D2 LD C, $D2 14 Copper Cauldrons at 1414, 210 Brass Cauldrons at 31,710
7A LD A, D D was $41; 122 Silver Cauldrons at 30,622
E2 LDH C, A Puts $41 into FFD2; 226 Self-stirring Cauldrons at 30,622
31 F9 CF LD SP, $CFF9 Fixes stack; 49 Best Blowing Gum at 196, 249 Pumpkin Pasties at 2490, 207 Cauldron Cakes at 1656
C8 RET 201 Licorice Wands at 402
This took 25 items, and costed 634,329 sickles. The main contributor of this is D5 in "21 0A D5". This forces me to buy 213 Lined Hats at the cost of 426,000 sickles. This is completely impractical, so I modified to the following
3D DEC A 255 cards will crash the game on view, so subtract 1
24 INC H H starts out at $d1, so do this 4 times
24 INC H
24 INC H
24 INC H
22 LDI [HL], A
05 DEC B B starts at $71
20 FC JRZ, $F01B can be modified to jump more, since gaps in items
0E D2 LD C, $D2
7A LD A, D
E2 LDH C, A
31 F9 CF LD SP, $CFF9
C8 RET
This now takes only 17 items, while removing the need for Lined Hats. Now it costs ~100k sickles. Unfortunately, since A was FE, the combos are now missing the following: Create Potion (Red/Purple) Extra Credit (Purple) Sleep (Blue) Slow (All) Telegraph Punch (Red/Blue/Green) Level Up (All, Club after Deliver Norbert) Blasting Curse (All) This is really bad, since that means you have to beat the game twice using Blue/Purple deck.
3D DEC A 255 cards will crash the game on view, so subtract 1
24 INC H H starts out at $d1, so do this 4 times
24 INC H
24 INC H
24 INC H
06 6A LD B, $6A This makes the loop stop at $D570
22 LDI [HL], A
05 DEC B
20 FC JRZ, $F01B can be modified to jump more, since gaps in items
3C INC A Make A FF again
06 09 LD B, $09
22 LDI [HL], A
05 DEC B
20 FC JRZ, $F022
0E D2 LD C, $D2
7A LD A, D
E2 LDH C, A
31 F9 CF LD SP, $CFF9
C8 RET
I tried replacing 3E 64 with a much smaller 06 6A H is now obtained in 4 batches of 36 items ($24).
1 2
5 6