<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//badecho.com/wp-content/plugins/wordpress-seo/css/main-sitemap.xsl"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.google.com/schemas/sitemap-image/1.1 http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<url>
		<loc>https://badecho.com/index.php/posts/</loc>
		<lastmod>2025-11-20T01:44:34+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/09/25/hacking-dark-souls-iii-part-1/</loc>
		<lastmod>2020-10-22T14:57:02+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/DS3CharacterCropped.png</image:loc>
			<image:caption><![CDATA[A frontal shot of our unmolested Knight used while hacking Dark Souls III.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/healthInStatus.png</image:loc>
			<image:caption><![CDATA[Shows the character's starting, full health in the Status window.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/cheatEngineSearchingHealth.png</image:loc>
			<image:caption><![CDATA[Shows the starting parameters when searching for the player's health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/damagedHealthInStatus.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows the player's health after getting smacked around a bit.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/cheatEngineDamagedHealth.png</image:loc>
			<image:caption><![CDATA[Shows the next parameter we search for and the results.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/cheatEngineFoundHealth.png</image:loc>
			<image:caption><![CDATA[Shows the located true player health in memory.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/cheatEngineFindWhatAccessesHealth-e1600812657582.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows us selecting "Find out what accesses this address" on our newly discovered player's health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/accessingHealthInstructions.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows the instructions reading from our discovered player's health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/healthStruct.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows the data structure containing the player's health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/addingRootPlayerAddressToList.png</image:loc>
			<image:caption><![CDATA[Shows us adding the address to our player's root structure to our address list.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/rootPlayerFindAccess.png</image:loc>
			<image:caption><![CDATA[Shows us, while hacking Dark Souls III, finding code that accesses the player's root structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/accessingPlayerRootInstructions.png</image:loc>
			<image:caption><![CDATA[Shows the instructions accessing our player's root structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/playerRootAccessShowAddressesAccessed.png</image:loc>
			<image:caption><![CDATA[Shows checking if only the player's root structure is being accessed by the code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/onlyPlayerRootAccessedGood.png</image:loc>
			<image:caption><![CDATA[Shows that nly the player's root structure is being accessed by the code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/playerPointerInStructDisassemble.png</image:loc>
			<image:caption><![CDATA[Shows the player's root structure, being accessed using our newly created player root pointer.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/playerGameDataStruct.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows the location of the PlayerGameData struct in our root player struct.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/playerGameDataStructValues.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows the character's stats found in the PlayerGameData structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/characterDataModules.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows where the various character modules are in the player's root structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/characterCoords.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows where the player's coordinates are located in the character's physics module.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/cheatEnginePlayerCoordsPointer.png</image:loc>
			<image:caption><![CDATA[While hacking Dark Souls III, shows evidence of our playerCoords pointer working and pointing to the actual player's coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/characterFallng.png</image:loc>
			<image:caption><![CDATA[Shows our player falling to his death after messing with his coordinates.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/09/28/hacking-dark-souls-iii-part-2/</loc>
		<lastmod>2020-10-22T14:57:24+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseHealthPointer.png</image:loc>
			<image:caption><![CDATA[While hacking the Apocalypse system into Dark Souls III, we can see the playerVitals pointer showing our health in Cheat Engine.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseWriteHealthDamage.png</image:loc>
			<image:caption><![CDATA[While hacking the Apocalypse system into Dark Souls III, we start our search for the damage application code by finding what writes to our health address after being damaged.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseWriteHealthDamageInstructions.png</image:loc>
			<image:caption><![CDATA[While hacking the Apocalypse system into Dark Souls III and after getting hit by an enemy, we can see the instructions responsible for updating our health after getting damaged.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseHealthWriteCode.png</image:loc>
			<image:caption><![CDATA[While hacking Apocalypse into Dark Souls III, we can see the code responsible for updating our health after getting smacked in the Memory Viewer.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseWriteHealthDamageBreakpoint.png</image:loc>
			<image:caption><![CDATA[While hacking Apocalypse into Dark Souls III, we insert a breakpoint on the health update following damage code, and unfortunately see an empty looking call stack.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseWriteHealthDamageGoodCallStack.png</image:loc>
			<image:caption><![CDATA[After continuing execution to the next "ret" instruction from the damaged health update instruction, we now have a call stack.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseWriteHealthDamageBestCallStack.png</image:loc>
			<image:caption><![CDATA[After continuing execution a bit more, we have a much more healthy call stack, showing the execution path taken to reach our damaged health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseBreakAndTraceInstructions.png</image:loc>
			<image:caption><![CDATA[Show us starting a "Break and trace instructions" operation on an instruction above the damaged health update instruction on the call stack.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseDamageApplicationCodeInTrace.png</image:loc>
			<image:caption><![CDATA[Here is the code responsible for applying the damage amount to the current health prior to updating the health in memory.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/apocalypseLogWindow.png</image:loc>
			<image:caption><![CDATA[Shows the on-stream Apocalypse display windows working.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/04/hacking-dark-souls-iii-part-3/</loc>
		<lastmod>2020-10-22T14:57:30+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/predatorFindLocationUpdate.png</image:loc>
			<image:caption><![CDATA[To start the hacking of the Predator system into Dark Souls III, we find the location update code by right clicking on our coordinates and choosing "Find out what writes to this address".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/predatorLocationUpdateEntries.png</image:loc>
			<image:caption><![CDATA[We can see, while hacking Dark Souls III, that there is a single, constantly executing function, updating our player's location.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/predatorLocationUpdateMemoryViewer.png</image:loc>
			<image:caption><![CDATA[This shows the initial view of the location update code we found.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/predatorLocationUpdateOtherAddresses.png</image:loc>
			<image:caption><![CDATA[While hacking the Predator system into Dark Souls III, we can see that there are multiple addresses being updated by the location update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/predatorMovementApplicationCode.png</image:loc>
			<image:caption><![CDATA[This shows the code that lives just a few lines up from the location update code. The movement application code!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/predatorMovementApplicationCodeValues.png</image:loc>
			<image:caption><![CDATA[With a breakpoint on the movement application code, and while moving our character, we see that there are movement offsets being added to the player's current coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/PredatorWorking.gif</image:loc>
			<image:caption><![CDATA[After hacking the Predator system into Dark Souls III, enemies are blazing fast, as this image shows.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/11/02/hacking-dragons-dogma-part-2/</loc>
		<lastmod>2020-11-07T05:43:06+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingHealthUpdate.png</image:loc>
			<image:caption><![CDATA[Shows how we start the search for the health update code by right clicking on our Health and choosing "Find out what writes to this address".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/SeeingTheHealthUpdateCode.png</image:loc>
			<image:caption><![CDATA[Show's the instruction that was detected to have written a new value to our health pointer.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/DamageApplicationCode.png</image:loc>
			<image:caption><![CDATA[Shows the disassembled output of the code nearby the health update code, and lo and behold, we can see the damage application code right above the update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/DamageApplicationForEnemy.png</image:loc>
			<image:caption><![CDATA[Shows a breakpoint being hit on the previously found health update code when an enemy is smacked this time (as opposed to player).]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/DamageSource.png</image:loc>
			<image:caption><![CDATA[Highlights a place in the stack (esp+158) where the damage source's location structure is listed.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/11/09/hacking-dragons-dogma-part-3/</loc>
		<lastmod>2020-11-09T21:58:24+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingLocationUpdate.png</image:loc>
			<image:caption><![CDATA[Shows how we start the search for the location update code, by right clicking on our X coordinate and clicking "Find out what writes to this address".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/SeeingTheLocationUpdateCodes.png</image:loc>
			<image:caption><![CDATA[Shows the results of opcode monitoring for writes to our coordinates. We are greeted with six different methods, all executing at different times.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingRealLocationUpdate.png</image:loc>
			<image:caption><![CDATA[Shows our method of finding the real location update code, by right clicking each instruction and choosing "Replace with code that does nothing" in order to see if the character can no longer move without it.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/MovementOffsets.png</image:loc>
			<image:caption><![CDATA[Shows the memory region containing movement offsets during execution of the movement application code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/PlayerHealthAccessForComparison.png</image:loc>
			<image:caption><![CDATA[Shows the code that accesses our player's health. There are nine functions.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/PawnsHealthAccessForComparison.png</image:loc>
			<image:caption><![CDATA[Shows the code accessing our pawn's health, which we'll be using for comparison purposes.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/BeforePredator.gif</image:loc>
			<image:caption><![CDATA[Shows how fast a goblin is running towards us before Predator integration. He's moving rather slowly.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/AfterPredator.gif</image:loc>
			<image:caption><![CDATA[Shows how fast the same goblin is running towards us after Predator integration. He's speeding toward us like a bullet now.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/09/hacking-dark-souls-iii-part-4/</loc>
		<lastmod>2020-11-12T06:10:14+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomCharacterStandingTall-e1602129607474.png</image:loc>
			<image:caption><![CDATA[Hacking the Abomnification system into Dark Souls III requires to find model drawing code. Here we see our player character, who will help us find that code, standing tall.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomCharacterBlocking.png</image:loc>
			<image:caption><![CDATA[Shows how there is a decrease in height when the character is blocking.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomFirstSearch.png</image:loc>
			<image:caption><![CDATA[Hacking the Abomnification system in Dark Souls III requires for us to locate values that change when the character's height changes. This shows how we start that search in Cheat Engine.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomSecondSearch.png</image:loc>
			<image:caption><![CDATA[Shows the result of searching for decreased values when locating scaling code when hacking in the Abomnification system in Dark Souls III.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomFindingCodeWriting-1.png</image:loc>
			<image:caption><![CDATA[Shows how we find the code writing to a value that looks like it might be character model related when hacking Abomnification into Dark Souls III.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomCodeWritingToValue.png</image:loc>
			<image:caption><![CDATA[Shows the instruction updating the value we suspect might be height related.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomModelDrawingCode.png</image:loc>
			<image:caption><![CDATA[Shows the code responsible for updating the suspected height value.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomHeightComparison.png</image:loc>
			<image:caption><![CDATA[Shows the differences in height with the suspected height drawing code disabled and then enabled. The character is shown to be shorter when blocking with the code enabled.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomVeryTall.png</image:loc>
			<image:caption><![CDATA[Demonstrates, while hacking Abomnification into Dark Souls III, that we have found the drawing code as doubling its values has doubled the character's height.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomFindingWhereToStoreMorphIdEnemyCoordPart1.png</image:loc>
			<image:caption><![CDATA[Shows how we're going to get a list of all enemy coordinates from a coordinate polling function.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomFindingWhereToStoreMorphIdEnemyCoordPart2.png</image:loc>
			<image:caption><![CDATA[Shows how, during our hacking of the Abomnification system into Dark Souls III, we can get physics structures of all enemies on the map.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomFindingWhereToStoreMorphIdEnemyCoordPart3.png</image:loc>
			<image:caption><![CDATA[Shows a row of data we're going to test to hold the morph scale ID for a creature.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomR12RegisterStruct.png</image:loc>
			<image:caption><![CDATA[Shows the data structure pointed to by the R12 register in the drawing function we uncovered when hacking the Abomnification system into Dark Souls III.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/abomPulseFunction.png</image:loc>
			<image:caption><![CDATA[Shows the update location code, where we will place our initiation point during our hacking of the Abomnification system into Dark Souls III.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/DS3Morphing.gif</image:loc>
			<image:caption><![CDATA[Shows the results of hacking the Abomnification system into Dark Souls III. A morphing monster!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/11/12/hacking-dragons-dogma-part-4/</loc>
		<lastmod>2020-11-12T22:34:01+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingCoordinatePollingFunction.png</image:loc>
			<image:caption><![CDATA[Shows how we start the general polling function search by right clicking on our X coordinate and choosing "Find out what accesses this address".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingCoordinatePollingFunction2.png</image:loc>
			<image:caption><![CDATA[Shows the next part of finding the general coordinate polling function, clicking on instructions that are reading our coordinates and then clicking "Show disassembler".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingCoordinatePollingFunction3.png</image:loc>
			<image:caption><![CDATA[Shows the third step of finding the general coordinate polling function, right clicking on the instruction in question and clicking "Find out what addresses this instruction accesses".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingCoordinatePollingFunctionFinal.png</image:loc>
			<image:caption><![CDATA[Shows us finding code that accesses the player's root structure while hacking Dark Souls III.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingMorphIDProperPlace.png</image:loc>
			<image:caption><![CDATA[Shows how we start our search for a good place to stow the morph scale ID, by right clicking all the highlight addresses in our "Accessed addresses" window and clicking "Open dissect data with selected addresses".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingMorphIDProperPlace2.png</image:loc>
			<image:caption><![CDATA[Shows the next step of figuring out where to store the morph scale ID, looking for data where there are a lot of surrounding 0's.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/BigHead.png</image:loc>
			<image:caption><![CDATA[Shows the results of the head scaling search in the character creation screen, which is our character with a huge head.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingScalesRoot.png</image:loc>
			<image:caption><![CDATA[Shows how we begin the search for the root structure containing the scales structure, by adding the first member of the scales structure to our address list and then checking what code accesses it.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingScalesRoot2.png</image:loc>
			<image:caption><![CDATA[Shows the code accessing the start of our scales struct, with the first code result seeming to source it from a root structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/FindingScalesRoot3.png</image:loc>
			<image:caption><![CDATA[Shows the configuration of the structure linker, with the "Fill in 'Local' structures" checkbox checked, used in order to find a relation from our location structure to the scales structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/LocationToScalesLink.png</image:loc>
			<image:caption><![CDATA[Shows the very hard to find relational link between the location and scales structure. Refer to text for more details.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/RookMorphing.gif</image:loc>
			<image:caption><![CDATA[Shows the results of Abomnification, with Rook morphing all over the place.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/29/hacking-dragons-dogma-part-1/</loc>
		<lastmod>2020-11-15T02:47:56+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/HealthDisplay.png</image:loc>
			<image:caption><![CDATA[Shows the in-game health display for the character, including its numeric value, which will be useful during our hacking of Dragon's Dogma.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/FirstHealthSearch.png</image:loc>
			<image:caption><![CDATA[Shows how we start the hacking of Dragon's Dogma by doing an initial search for the player's health, which we know is at 450.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/SecondHealthSearch.png</image:loc>
			<image:caption><![CDATA[Shows the next search for our health at an updated value of 319, thinning the list of results to just two results.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/ThirdHealthSearch.png</image:loc>
			<image:caption><![CDATA[Shows an updated search across a range of potential updated health values for our player during our hacking of Dragon's Dogma.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/HealthAccesss.png</image:loc>
			<image:caption><![CDATA[Shows the code that is reading our discovered health value.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/HealthStruct.png</image:loc>
			<image:caption><![CDATA[Shows the health data structure we found while hacking Dragon's Dogma.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/CoordinatesRock.png</image:loc>
			<image:caption><![CDATA[Shows our character standing in front of a rock, which we'll be using to find the Y-coordinate for the player.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/CoordinatesOnRock.png</image:loc>
			<image:caption><![CDATA[Shows us standing on the rock, which will raise our Y-coordinate.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/CoordinatesSearch.png</image:loc>
			<image:caption><![CDATA[Shows the results of us jumping on and off the rock, looking for that Y-coordinate.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/CoordinatesStruct.png</image:loc>
			<image:caption><![CDATA[Shows the contents of the location structure for the player, with some fields mapped out by myself already.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/TableAfterCoordinates.png</image:loc>
			<image:caption><![CDATA[Shows the beginnings of our Omnified Dragon's Dogma table. Here we see the Health and X, Y, and Z coordinates for the player.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/StaminaDisplay.png</image:loc>
			<image:caption><![CDATA[Shows the player's stamina bar and the numeric value for stamina at its maximum value in the Status screen.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/StaminaSearch.png</image:loc>
			<image:caption><![CDATA[Shows the results of our search for the player's stamina.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/StaminaStruct.png</image:loc>
			<image:caption><![CDATA[Shows the contents of the structure containing the player's stamina.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/25/hacking-dark-souls-iii-part-5/</loc>
		<lastmod>2020-11-17T18:29:14+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/playtestFixesShifting.png</image:loc>
			<image:caption><![CDATA[After hacking Dark Souls III and making it Omnified, I noticed the character modules would shift randomly in location. This picture shows the recently discovered module collection pointer and its contents.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/11/27/nativemethods-in-dotnet-5/</loc>
		<lastmod>2020-11-27T16:48:11+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/Net50Analyzers.png</image:loc>
			<image:caption><![CDATA[Shows a bit of a Solution Explorer window displaying a project named Statsplash with the Dependencies and Analyzers folders expanded.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/Net50Interop.png</image:loc>
			<image:caption><![CDATA[Shows a listing of decompiled classes holding P/Invokes in the new .NET 5.0 library.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/07/hacking-ac-valhalla-part-1/</loc>
		<lastmod>2020-12-12T00:33:30+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/HealthDisplay.png</image:loc>
			<image:caption><![CDATA[Shows the health display in the game. It consists of a unlabeled, roughly half-filled, bar of health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/HealthSearchFirst.png</image:loc>
			<image:caption><![CDATA[Shows our very first search for hacking goodness in the game AC: Valhalla. We're doing an Unknown initial value scan type for floats hoping to find our player's health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/ProperHealthSearchResults.png</image:loc>
			<image:caption><![CDATA[Shows us actually finding the health from doing, unbelievably, a search for 4 byte values.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/HealthAccesses.png</image:loc>
			<image:caption><![CDATA[Shows three instructions accessing our player's health, as well as the offset used to access the value (0x138).]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/11/HealthStructure.png</image:loc>
			<image:caption><![CDATA[Shows the rather barren looking structure contents that holds our player's health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/ANiceCurvature.png</image:loc>
			<image:caption><![CDATA[Shows the strong, sexy male warrior player standing confidently (as if he just got laid) on a piece of ground with a gentle slope downwards.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/FallingToDeath.png</image:loc>
			<image:caption><![CDATA[Here we see our dashing and unbelievably sexy warrior gazing down into the abyss he himself is falling into. To his death.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/VerticalAxisNeighbors.png</image:loc>
			<image:caption><![CDATA[Shows the memory nearby a vertical axis value.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/OpcodesAccessingPlayersCoords.png</image:loc>
			<image:caption><![CDATA[Shows the opcodes accessing the player's coordinates. There are many listed here.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthStructStart.png</image:loc>
			<image:caption><![CDATA[Shows the top contents of the player's health structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthStructBaseAccess.png</image:loc>
			<image:caption><![CDATA[Shows the opcodes accessing the base of our player's health structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthStructBaseAccessCode.png</image:loc>
			<image:caption><![CDATA[Shows the instructions involved in accessing our player's health structure base.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthStructBaseSourceCode.png</image:loc>
			<image:caption><![CDATA[Shows the code where the base address of the health structure is being sourced from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/CharacterRootStruct.png</image:loc>
			<image:caption><![CDATA[Shows the contents of the potential character root structure. Pointers to both the health and location structs are contained within. Yay.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthStructBaseSourceCode.png</image:loc>
			<image:caption><![CDATA[Shows the code where the base address of the health structure is being sourced from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthStructBaseSourceCode.png</image:loc>
			<image:caption><![CDATA[Shows the code where the base address of the health structure is being sourced from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/RootContainerSourcingFunction.png</image:loc>
			<image:caption><![CDATA[Our elusive root container sourcing function is shown here.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthStructShowingLinkToRoot.png</image:loc>
			<image:caption><![CDATA[Here we see one of our child structures finally pointing to a parent.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/RootContainerBothLocationAndHealth.png</image:loc>
			<image:caption><![CDATA[Shows how the location and health structures also appear in the character root container predecessor.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/20/hacking-ac-valhalla-part-3/</loc>
		<lastmod>2020-12-28T05:11:44+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/LocationUpdateSearch.png</image:loc>
			<image:caption><![CDATA[Show us finding the location update code by right clicking one of our coordinates and choosing "Find out what writes to this address".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/LocationUpdateCode.png</image:loc>
			<image:caption><![CDATA[Shows the code detected to have written to our coordinates upon moving.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/LocationUpdateDisassembledCode.png</image:loc>
			<image:caption><![CDATA[Shows the disassembled location update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/LocationUpdateCodeExecuting.png</image:loc>
			<image:caption><![CDATA[Shows the location update code during execution along with its call stack.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/StartOfMovementApplicationTrace.png</image:loc>
			<image:caption><![CDATA[Shows the starting point for our movement application code trace.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MovementApplicationTraceOptions.png</image:loc>
			<image:caption><![CDATA[Shows the options we used to trace the movement application code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MovementApplicationTrace.png</image:loc>
			<image:caption><![CDATA[Shows the first occurrence of values similar to our coordinates in the trace.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/UpdatedCoordinateValueWrites.png</image:loc>
			<image:caption><![CDATA[Shows the code writing to the address pointed to by the rax register in the trace.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MovementApplicationCode.png</image:loc>
			<image:caption><![CDATA[Shows the disassembled code that wrote to the updated coordinate value location, including the movement application code!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MovementApplicationCodeExecution.png</image:loc>
			<image:caption><![CDATA[Shows a breakpoint being hit on the movement application code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MovementApplicationCodeStack.png</image:loc>
			<image:caption><![CDATA[Shows an address of interest in the stack during movement application code execution.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MovementApplicationCodeRelations.png</image:loc>
			<image:caption><![CDATA[Shows the structural contents of the "Movement" structure, which contains a Location structure member.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MovementApplicationCodeRelationsNPC.png</image:loc>
			<image:caption><![CDATA[Shows the movement structure for an NPC.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/ValhallaSlow-1.gif</image:loc>
			<image:caption><![CDATA[Shows an enemy running at the player at normal speed.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/ValhallaFast-1.gif</image:loc>
			<image:caption><![CDATA[Shows an enemy running at the player at Predator speed.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/11/14/tombstone-ds-iii/</loc>
		<lastmod>2020-12-28T17:19:38+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/11/17/hacking-dragons-dogma-part-5/</loc>
		<lastmod>2020-12-29T21:07:16+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/14/hacking-ac-valhalla-part-2/</loc>
		<lastmod>2020-12-31T22:57:32+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateFinding.png</image:loc>
			<image:caption><![CDATA[Shows us right clicking on our Health and choosing "Find out what writes to this address".]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCode.png</image:loc>
			<image:caption><![CDATA[Shows the assembly that updates our health to new values following damage.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCallingCode.png</image:loc>
			<image:caption><![CDATA[Shows the instructions that are executed prior to the health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCodeTraceLocation.png</image:loc>
			<image:caption><![CDATA[Shows the instruction where we'll be performing a trace from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCodeBreakpointCondition.png</image:loc>
			<image:caption><![CDATA[Shows a breakpoint condition window with the condition being RCX set to our health structure address.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateTrueCallingCode.png</image:loc>
			<image:caption><![CDATA[Shows the true calling code for our health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCallingCallingCode.png</image:loc>
			<image:caption><![CDATA[Show instructions that call the code that calls the health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCodeTrueTraceLocation.png</image:loc>
			<image:caption><![CDATA[Shows the instruction that we will be doing a trace for the damage update code from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCodeTrace.png</image:loc>
			<image:caption><![CDATA[Shows our health update code within the trace.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCodeTraceLocationRoundThree.png</image:loc>
			<image:caption><![CDATA[Shows the starting point for round three in tracing of the health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCodeHopefullyFinalTraceLocation.png</image:loc>
			<image:caption><![CDATA[Shows the code where we'll be doing the, hopefully final, trace to find the damage application code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/HealthUpdateCodeTraceSearch.png</image:loc>
			<image:caption><![CDATA[Shows an example query used to find the address where the calculated health is.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/DamageApplicationCodeTrace.png</image:loc>
			<image:caption><![CDATA[Shows the damage application code, as we believe it to be, in a trace log.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/TakingABeating.png</image:loc>
			<image:caption><![CDATA[Shows our character getting smacked, but with no change in the health bar.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/DamageApplicationCodeBreakpoint.png</image:loc>
			<image:caption><![CDATA[Shows the state of the registers during execution of the damage application code while we're being smacked.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnigasmbigger.png</image:loc>
			<image:caption><![CDATA[Omni has a new website! Much gasm required.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/OneHitKillWrites.png</image:loc>
			<image:caption><![CDATA[Shows the code that wrote to our temporary new health value, one of them being the evil one hit kill protection code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/OneHitKillTrace.png</image:loc>
			<image:caption><![CDATA[Shows the fateful jump that, if it doesn't happen, causes us not to die from one shots above a certain health threshold.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/31/hacking-ac-valhalla-part-5/</loc>
		<lastmod>2021-01-13T01:07:52+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/NPCPollingFunctionMissingSome.png</image:loc>
			<image:caption><![CDATA[Shows the addresses being accessed by our NPC polling function. It is only accessing 11.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/NewNPCCoordinatePolls.png</image:loc>
			<image:caption><![CDATA[Shows a list of new potential NPC coordinate polling functions to choose from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/TerrifyingDancing.png</image:loc>
			<image:caption><![CDATA[Shows dancing villagers looking very creepy due to Abomnification morphing.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/ZeroScales.png</image:loc>
			<image:caption><![CDATA[Shows zero multiplier scales being returned for some characters.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/NewNPCCoordinatePollsRound2.png</image:loc>
			<image:caption><![CDATA[Shows yet another list of instructions accessing some NPC coordinates.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/28/2021-new-year-roadmap/</loc>
		<lastmod>2021-01-13T01:08:34+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/09/22/new-website-bitches-stream-schedule-for-sept-oct/</loc>
		<lastmod>2021-01-15T19:22:04+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnigasmbigger.png</image:loc>
			<image:caption><![CDATA[Omni has a new website! Much gasm required.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnS_224.png</image:loc>
			<image:caption><![CDATA[Oscar looking a bit stressed out at the fact that Omni has a new website.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/13/stream-schedule-for-october/</loc>
		<lastmod>2021-01-15T19:22:45+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnigasmbigger.png</image:loc>
			<image:caption><![CDATA[Gasm face for the new Omni stream schedule for October!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/01/17/hacking-ac-valhalla-part-7/</loc>
		<lastmod>2021-01-20T18:27:37+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/PlayerAbomnificationPoints.png</image:loc>
			<image:caption><![CDATA[Shows code accessing our player's coordinates, with the highlighted instruction being one of interest.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/FatPlayer.png</image:loc>
			<image:caption><![CDATA[Shows the player Abomnified and fat.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/FakeDamageSuspects.png</image:loc>
			<image:caption><![CDATA[Shows two shady characters who, when performing a kill animation on, cause the Apocalypse system to think that the player is the one being damaged.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/SquashingHead.png</image:loc>
			<image:caption><![CDATA[Shows the player character about to smash an enemy's head.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/01/14/hacking-ac-valhalla-part-6/</loc>
		<lastmod>2021-01-20T18:27:55+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/v111.png</image:loc>
			<image:caption><![CDATA[Assassin's Creed Valhalla has been updated to v1.1.1.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/01/11/when-to-use-var/</loc>
		<lastmod>2021-02-18T22:54:38+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/28/tombstone-dragons-dogma/</loc>
		<lastmod>2021-04-01T07:07:03+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/04/01/tombstone-assassins-creed-valhalla/</loc>
		<lastmod>2021-04-01T08:01:40+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/27/hacking-ac-valhalla-part-4/</loc>
		<lastmod>2021-04-23T13:16:18+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/LookingForScalingParameters.png</image:loc>
			<image:caption><![CDATA[Shows us looking for scaling parameters.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/ScaleSearchLittleEndian.png</image:loc>
			<image:caption><![CDATA[Shows us searching for three contiguous 1.0 floating point values in memory.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/Crouching.png</image:loc>
			<image:caption><![CDATA[Shows our character crouching pensively during our search for the rendering code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/RenderingDrawingCodePrecursorCode.png</image:loc>
			<image:caption><![CDATA[Shows a commonly executed instruction encountered when searching for changes in our character's model.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/RenderingDrawingCodePrecursorDisabled.png</image:loc>
			<image:caption><![CDATA[Shows the character missing an upper body after having removed the initially found rendering code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/GlobalScaleMemory.png</image:loc>
			<image:caption><![CDATA[Shows the contents of the global scale static memory.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/OneHalfGlobalWidth.png</image:loc>
			<image:caption><![CDATA[Shows the character being much skinnier after reducing the global width scaling.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/GlobalScaleUsers.png</image:loc>
			<image:caption><![CDATA[Shows all the instructions accessing the global scale multiplier.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/ScalingMultiplierCode.png</image:loc>
			<image:caption><![CDATA[Shows the most commonly executed consumption of the global scale multiplier.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/DisablingGlobalScaleByPotential.png</image:loc>
			<image:caption><![CDATA[Shows the character all scrunched up from disabling the most commonly executed use of the global scaling multiplier.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/OnePointFiveThirdModelScale.png</image:loc>
			<image:caption><![CDATA[Shows a taller character when applying a 1.5x multiplier to the global scaling code at its most common usage point.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/FourFirstModelScale.png</image:loc>
			<image:caption><![CDATA[Shows the character's width increasing when multiplying one of the values by 4x at the most common usage point of the global scale multiplier.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/PotentialRenderingDrawingCode.png</image:loc>
			<image:caption><![CDATA[Shows the code ultimately making use of the global scaling multiplier at its most common usage point.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/DataAccessByPotential.png</image:loc>
			<image:caption><![CDATA[Shows the most accessed data points (in reverse order) by the previously shown code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/RenderingDataOnStack.png</image:loc>
			<image:caption><![CDATA[Shows the state of the registers and stack when accessing our user data.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/RenderingDataLink.png</image:loc>
			<image:caption><![CDATA[Shows the structural contents of the data pointed to by the stack at the rendering code, along with a successful mapping to our Location structure!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/FindingAGoodAbomInitiationPoint.png</image:loc>
			<image:caption><![CDATA[Shows the coordinate polling functions polling for our player's coordinates. There's a lot of them.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/FailAbomInitPoint.png</image:loc>
			<image:caption><![CDATA[Shows that the most frequently executed coordinate polling function is only looking at our player's coordinate. Absolute failure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/LocationUpdateWrites.png</image:loc>
			<image:caption><![CDATA[Shows that there are 177 different things moving on the map right now. Wowza!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/EnemyCoordinatePollingFunctions.png</image:loc>
			<image:caption><![CDATA[Shows the code accessing the enemy's coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/EnemyCoordinatePollingAccesses.png</image:loc>
			<image:caption><![CDATA[Shows all the addresses being accessed by the enemy coordinate polling function.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/TemporaryChangeToGetEnemyCoords.png</image:loc>
			<image:caption><![CDATA[Shows a temporary change made to the Predator system so we can log known NPC coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/AbsolutelyNPCCoordsOK.png</image:loc>
			<image:caption><![CDATA[Shows addresses being accessed by the movement application code. There are only 13 NPC actually it seems.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/TrueNPCPollingFunction.png</image:loc>
			<image:caption><![CDATA[Shows a distinct list of NPC coordinate polling function. Around 20+ of them.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/ExcellentNPCCoordinateAccesses.png</image:loc>
			<image:caption><![CDATA[Shows a nice list of only 19 addresses being accessed by the NPC coordinate polling function.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/AbomnificationInitiationPointCode.png</image:loc>
			<image:caption><![CDATA[Shows where we'll be implementing the Abomnification initiation point. A perfect NPC coordinate polling function.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/SampleDataForMorphScale.png</image:loc>
			<image:caption><![CDATA[Shows a structure dissect window full of sample enemy location data.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/GoodMorphScaleIDLocation.png</image:loc>
			<image:caption><![CDATA[Shows a green row of all 5's where we tested writing a fake morph scale ID.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/BusyMorphScaleData.png</image:loc>
			<image:caption><![CDATA[Shows a busy looking morphScaleData region. A bunch of red memory indicating values being updated with generated scaling parameters.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/MorphScaleIdNextToString.png</image:loc>
			<image:caption><![CDATA[Shows the morph scale ID row highlighted, with the neighboring "string" value right below it.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/04/23/hacking-the-witcher-part-4/</loc>
		<lastmod>2021-06-07T02:36:01+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/WitcherLogo-e1617575127960.png</image:loc>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/aAbom1.png</image:loc>
			<image:caption><![CDATA[Geralt essentially crouches mid-air while jumping.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom1.png</image:loc>
			<image:caption><![CDATA[Shows rendering-related values found during our search.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom2.png</image:loc>
			<image:caption><![CDATA[Shows the instruction writing to one of the searched for values.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom3.png</image:loc>
			<image:caption><![CDATA[Shows the instructions in the searched for rendering code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom4.png</image:loc>
			<image:caption><![CDATA[Shows a huge-headed Geralt.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom5.png</image:loc>
			<image:caption><![CDATA[Shows an...invisible Geralt?]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom6.png</image:loc>
			<image:caption><![CDATA[Shows a wider bodied, floating head Geralt.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom7.png</image:loc>
			<image:caption><![CDATA[Shows the CRenderProxy_Mesh structure and the group it belongs to.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Abom8.png</image:loc>
			<image:caption><![CDATA[Shows code that is essentially polls for CRenderEntityGroups.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/04/21/hacking-witcher-part-3/</loc>
		<lastmod>2021-06-07T02:36:21+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/WitcherLogo-e1617575127960.png</image:loc>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Pred1.png</image:loc>
			<image:caption><![CDATA[Right click on our coordinates, and click here to see what is writing to them.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Pred2.png</image:loc>
			<image:caption><![CDATA[One lonely location update code seems to be updating our coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Pred3.png</image:loc>
			<image:caption><![CDATA[Shows only a single place in memory being accessed.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/Pred4.png</image:loc>
			<image:caption><![CDATA[Shows the NPC location update code.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/04/04/hacking-witcher-part-1/</loc>
		<lastmod>2021-06-07T02:37:34+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/WitcherLogo-e1617575127960.png</image:loc>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/PlayerHealth.png</image:loc>
			<image:caption><![CDATA[Behold! The player vitality is displayed to unabashedly!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/HealthSearch.png</image:loc>
			<image:caption><![CDATA[Behold! 189 results and counting! Soon we shall narrow it down!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/FoundPlayerHealthWow.png</image:loc>
			<image:caption><![CDATA[Behold! I have found the player's health!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/InstructionsAccessingPlayerHealth.png</image:loc>
			<image:caption><![CDATA[Four instructions are accessing the player's health. Which one will be of most use to us?]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/EvenWorseEvenMoreAccessesOfHealth.png</image:loc>
			<image:caption><![CDATA[Shows too many addresses being accessed for the instruction to be of use to us.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/AddressesAccessByBetterHealthAccess.png</image:loc>
			<image:caption><![CDATA[Shows what the most promising of the health instructions is accessing.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/StaminaSameAsBetterHealthAccess.png</image:loc>
			<image:caption><![CDATA[Shows the stamina bar having the same value as the second address in the previous image.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RAXIsCharStatsRDXIsIndexer3IsStam.png</image:loc>
			<image:caption><![CDATA[Shows the instruction polling the player stats.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/VitalsStruct.png</image:loc>
			<image:caption><![CDATA[Shows the contents of our mapped Vitals structure for the player.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/SearchingForUnknownCoordinates.png</image:loc>
			<image:caption><![CDATA[Shows over a billion floats to sift through in order to find the coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/FloatingAboveEarth.png</image:loc>
			<image:caption><![CDATA[Shows the character floating far above the ground after changing the immediate Z value.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/CodeWritingToImmediateZ.png</image:loc>
			<image:caption><![CDATA[Shows some code that goes off before our "immediate vertical position" value is written to.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/LocationPollingFunctions.png</image:loc>
			<image:caption><![CDATA[Shows the instructions reading from our location coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure1.png</image:loc>
			<image:caption><![CDATA[Shows where the player vitals structure comes from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure2.png</image:loc>
			<image:caption><![CDATA[Shows the W3AbilityManager structure, with the Vitals structure highlighted.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure3.png</image:loc>
			<image:caption><![CDATA[Shows the contents of the root player structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure4.png</image:loc>
			<image:caption><![CDATA[Shows the "character stats" structure within our root structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure5.png</image:loc>
			<image:caption><![CDATA[Shows the incorrect ability manager structure found in the previous character stat]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure6.png</image:loc>
			<image:caption><![CDATA[Shows code directly accessing our ability manager.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure7.png</image:loc>
			<image:caption><![CDATA[Shows code at the top of this recursive property lookup scheme.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure8.Actual.png</image:loc>
			<image:caption><![CDATA[Shows execution stopped at lookup start with proper data discriminator for ability manager.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure9.png</image:loc>
			<image:caption><![CDATA[Shows a gigantic execution trace from the lookup start, and the magic sauce therein.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure9.5.png</image:loc>
			<image:caption><![CDATA[Shows the property definition class for our ability manager property.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/RootStructure10.png</image:loc>
			<image:caption><![CDATA[Shows the contents of the resolved data structure for our ability manager.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/03/31/omni-tv-added-to-hackpa/</loc>
		<lastmod>2021-06-07T02:37:54+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/03/OmniTVAnnouncement.png</image:loc>
			<image:caption><![CDATA[Omni TV! The place to watch Omni when he streams to his hackpad.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/03/21/stream-schedule-2-0/</loc>
		<lastmod>2021-06-07T02:38:01+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/03/clock.png</image:loc>
			<image:caption><![CDATA[Tick tock tick tock. New schedule for Omni in 2021.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/03/14/abomnification-system-adding-a-pause/</loc>
		<lastmod>2021-06-07T02:38:15+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/03/AbomnificationPause.png</image:loc>
			<image:caption><![CDATA[Let's add a brief period of non-morphing to occur after a morph completes so we can let the new shape and size set in.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/03/MorphNoPause.gif</image:loc>
			<image:caption><![CDATA[Shows a morphing character continuously changing shapes.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/03/MorphWithPause.gif</image:loc>
			<image:caption><![CDATA[Shows our character morphing, with pauses between morphs!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/03/01/apocalypse-system-adding-fatalis-debuff/</loc>
		<lastmod>2021-06-07T02:38:29+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/02/AddingFatalisDebuff.png</image:loc>
			<image:caption><![CDATA[Let's add a new timed debuff to the Apocalypse system that, when active, causes the player to be one shot!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/02/DeadPlayer.png</image:loc>
			<image:caption><![CDATA[Shows the player character, either sleeping soundly in the grass, or very dead.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/02/FatalisExample.png</image:loc>
			<image:caption><![CDATA[Shows the new Fatalis related events in the Apocalypse event log.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/02/07/stream-schedule-2021/</loc>
		<lastmod>2021-06-07T02:40:19+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnigasmbigger.png</image:loc>
			<image:caption><![CDATA[New schedule!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/01/13/one-year-of-omnified-streaming/</loc>
		<lastmod>2021-06-07T02:40:53+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/EarlyOmnifiedDeath.png</image:loc>
			<image:caption><![CDATA[Shows the character dying in one hit in the first Omnified game.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/SecondOmnifiedGame.png</image:loc>
			<image:caption><![CDATA[Shows me running away from enemies in the second Omnified game.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/ThirdGameHacking.png</image:loc>
			<image:caption><![CDATA[Shows how I started to hack on stream for the third Omnified game.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/FourthGameGettingFancier.png</image:loc>
			<image:caption><![CDATA[Shows hacking of fancier types of changes to Omnified Mass Effect on stream.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/FifthGameFirstSpeedHack.png</image:loc>
			<image:caption><![CDATA[Shows me hacking the beginnings of the first of my speed hacks in Omnified Mass Effect 2.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/SixthGameFirstStats.png</image:loc>
			<image:caption><![CDATA[Shows the birth of hacked game data statistics, displayed live on stream.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/SeventhGameApocalypse.png</image:loc>
			<image:caption><![CDATA[Shows the beginnings of the Apocalypse system in Omnified Resident Evil 3.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/EigthGameFirstApocalypseLog.png</image:loc>
			<image:caption><![CDATA[Shows the first time we made use of the Apocalypse system log on stream.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/NinthGameFirstAbomnification.png</image:loc>
			<image:caption><![CDATA[Shows the first time Omnified Abomnifications: animated mutations of NPCs.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/TenthOmnifiedImage.png</image:loc>
			<image:caption><![CDATA[Shows a clip from Omnified Dark Souls III, a game with all three Omnified game-neutral systems implemented.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/19/apocalypse-system/</loc>
		<lastmod>2021-06-18T15:47:20+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/OneHitDeath.png</image:loc>
			<image:caption><![CDATA[Shows how most damage would affect the player before the Apocalypse system: by simply murdering them in one hit.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/FallingDeath.gif</image:loc>
			<image:caption><![CDATA[Shows the player falling through the ground to their death due to the Apocalypse system.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/06/18/predator-system/</loc>
		<lastmod>2021-06-22T21:47:50+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/ThePredatorSystem.png</image:loc>
			<image:caption><![CDATA[Predator system makes things go fast. Real fast.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/FifthGameFirstSpeedHack.png</image:loc>
			<image:caption><![CDATA[Shows me hacking the beginnings of the first of my speed hacks in Omnified Mass Effect 2.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/PredatorAreasOfInfluence.png</image:loc>
			<image:caption><![CDATA[Shows the various concentric circles that denote the regions composing the areas of influence.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/PredatorSystemSwarming.gif</image:loc>
			<image:caption><![CDATA[Shows a large group of enemies swarming the player due to boosts by the Predator system.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/PredatorSystemAreaOfThreat.gif</image:loc>
			<image:caption><![CDATA[Shows an enemy accurately delivering a fatal attack at great speed due to its speed dropping after crossing into the area of threat.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/04/14/omnified-hacks-published/</loc>
		<lastmod>2021-06-22T21:48:19+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/OmnifiedHacksPublished.png</image:loc>
			<image:caption><![CDATA[All that juicy Omnified assembly code is now available for viewing as I write it!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/05/31/rise-and-fall/</loc>
		<lastmod>2021-07-01T15:07:51+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/RiseAndFallStreamer.png</image:loc>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/StoneSoup.png</image:loc>
			<image:caption><![CDATA[Dungeon Crawl: Stone Soup]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OldDFOmni.png</image:loc>
			<image:caption><![CDATA[Dwarf Fortress. A classic.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniGothicII.png</image:loc>
			<image:caption><![CDATA[Gothic II, one of the best RPGs!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OldOmniBG.png</image:loc>
			<image:caption><![CDATA[Omni, new to streaming, playing one of the best; Baldur's Gate.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniFirstLobosRaid.png</image:loc>
			<image:caption><![CDATA[Omni playing Icewind Dale post-raid, with a follower notification displayed.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/ViewsBeforeRaid.png</image:loc>
			<image:caption><![CDATA[Shows how my average viewer count absolutely dwarfed all previous streams.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OldOmniPoE.png</image:loc>
			<image:caption><![CDATA[Omni playing Pillars of Eternity with an empty tip jar.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniOblivion.png</image:loc>
			<image:caption><![CDATA[Shows me playing my special Oblivion, with a green screen!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniFirstSkyrim.png</image:loc>
			<image:caption><![CDATA[Omni playing some Skyrim, one of the first streams of it.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniFollowersBump2017.png</image:loc>
			<image:caption><![CDATA[Shows the meteoric rise in followers I got during 2017.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniDivinity.png</image:loc>
			<image:caption><![CDATA[Shows Omni playing some Divinity: Original Sin 2.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniSkyrimReturn.png</image:loc>
			<image:caption><![CDATA[Shows me playing with an orange during my return to Skyrim.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/OmniPeak.png</image:loc>
			<image:caption><![CDATA[Omni at his peak doing the Skyrim permadeath runs.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/05/ChatDecline2019.png</image:loc>
			<image:caption><![CDATA[Shows the tapering off of chat activity during the 2019 decline.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omniSmug.png</image:loc>
			<image:caption><![CDATA[The face of Omni.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/04/12/hacking-witcher-part-2/</loc>
		<lastmod>2021-08-25T18:26:34+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/WitcherLogo-e1617575127960.png</image:loc>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic1.png</image:loc>
			<image:caption><![CDATA[Shows the code that updates a players health to a new value.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic2.png</image:loc>
			<image:caption><![CDATA[Shows the code and surrounding code that updates the player's health for all situations.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic3.png</image:loc>
			<image:caption><![CDATA[Shows the method one level up on the stack to the health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic4.png</image:loc>
			<image:caption><![CDATA[Shows a parent function call a few levels above the health update code from which we'll be starting a trace.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic7.png</image:loc>
			<image:caption><![CDATA[Shows our trace results from the parent function that led to the health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic8.png</image:loc>
			<image:caption><![CDATA[Shows us the meat of the matter: the damage application code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic10.png</image:loc>
			<image:caption><![CDATA[Shows our damage application code, with execution paused during an actual damage application.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/ApocalypsePic9.png</image:loc>
			<image:caption><![CDATA[Our player's W3AbilityManager and its addresses, including its type identity.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/CirisCoordinates1.png</image:loc>
			<image:caption><![CDATA[Shows Ciri's still functioning Immediate coordinate values.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/CirisCoordinates2.png</image:loc>
			<image:caption><![CDATA[Shows the code accessing Ciri's actual coordinates]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/08/02/hacking-cyberpunk-part-1/</loc>
		<lastmod>2021-08-26T19:14:31+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/cyberpunkLogo.jpg</image:loc>
			<image:caption><![CDATA[Cyberpunk 2077]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/HealthBar.png</image:loc>
			<image:caption><![CDATA[Shows the health bar in the game, with both current and max health values displayed to us.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/ScanHealthMultiplierHighlighted.png</image:loc>
			<image:caption><![CDATA[Shows the state of our search at the time we located the current health percentage.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/HealthSecondAccessUnpaused.png</image:loc>
			<image:caption><![CDATA[Shows the code accessing our health percentage, with the injection site of choice highlighted.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/DisassemblerStaminaAndHealth.png</image:loc>
			<image:caption><![CDATA[Shows the code in the disassembler window that reads the health and other percentages.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/HealthAccessedAddresses.png</image:loc>
			<image:caption><![CDATA[Shows all the unwanted data getting accessed by the health polling code when the game isn't paused.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/PropertyResolutionBaseAddress.png</image:loc>
			<image:caption><![CDATA[Shows a trace containing instructions involved in the complicated vitals structure resolution system.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/RootStructureAccess.png</image:loc>
			<image:caption><![CDATA[Shows four places in code that read our player's root structure.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/08/06/hacking-cyberpunk-part-2/</loc>
		<lastmod>2021-08-26T19:14:37+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/cyberpunkLogo.jpg</image:loc>
			<image:caption><![CDATA[Cyberpunk 2077]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/08/PhotoModeCoordinates.png</image:loc>
			<image:caption><![CDATA[Shows the coordinates display in the game, while in Photo Mode.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/08/CharacterStatsRead.png</image:loc>
			<image:caption><![CDATA[Shows the code responsible for reading the character's stats.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/08/26/hacking-cyberpunk-part-3/</loc>
		<lastmod>2021-08-26T19:14:54+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/cyberpunkLogo.jpg</image:loc>
			<image:caption><![CDATA[Cyberpunk 2077]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/08/HealthUpdateCode.png</image:loc>
			<image:caption><![CDATA[Shows the code that updates health with new values in Cyberpunk 2077.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/08/DamageApplicationCode.png</image:loc>
			<image:caption><![CDATA[Shows the code where damage is being applied to our current health value.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/08/DamageApplicationXMM.png</image:loc>
			<image:caption><![CDATA[Shows the contents of the XMM registers during a damage application execution.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/08/DamageApplicationCodePlayerHit.png</image:loc>
			<image:caption><![CDATA[Shows the damage application code again, with the memory browser showing the place in memory that the RDI register points to.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/08/PlayerIdentifyingAttackAccesses.png</image:loc>
			<image:caption><![CDATA[Shows code accessing the root of our player identifying attack structure.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/06/22/tombstone-witcher/</loc>
		<lastmod>2021-09-01T19:17:42+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/04/WitcherLogo-e1617575127960.png</image:loc>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/OmnifiedLook.png</image:loc>
			<image:caption><![CDATA[Shows the new interface for the easy-to-use Omnified executable.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/09/01/tombstone-cyberpunk/</loc>
		<lastmod>2021-09-01T20:40:07+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/cyberpunkLogo.jpg</image:loc>
			<image:caption><![CDATA[Cyberpunk 2077]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/EasyToUseCyberpunkHack.png</image:loc>
			<image:caption><![CDATA[Shows the new interface for the easy-to-use Omnified executable.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/09/17/hacking-nioh-part-1/</loc>
		<lastmod>2021-09-20T12:12:20+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2.jpg</image:loc>
			<image:caption><![CDATA[Nioh 2]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2HPBar.png</image:loc>
			<image:caption><![CDATA[Shows the in-game health/stamina bar for the player.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2HPStats.png</image:loc>
			<image:caption><![CDATA[Shows how the game displays numeric values for the player's vitals.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2HPAccesses.png</image:loc>
			<image:caption><![CDATA[Shows the code accessing our health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2HPSingleAddressAccessed.png</image:loc>
			<image:caption><![CDATA[Shows a prospective hook location exclusively accessing our health.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2HPStruct.png</image:loc>
			<image:caption><![CDATA[Shows the contents of our discovered health structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2Stats.png</image:loc>
			<image:caption><![CDATA[Shows the listing of all the player's stats in the Status menu.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2StaminaAccesses.png</image:loc>
			<image:caption><![CDATA[Shows a number of instructions reading our stamina.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2StaminaSingleAddressAccessed.png</image:loc>
			<image:caption><![CDATA[Shows a single stamina address being accessed.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2CoordinateAccesses.png</image:loc>
			<image:caption><![CDATA[Shows the large number of instructions accessing our player's coordinates.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/09/20/hacking-nioh-part-2/</loc>
		<lastmod>2021-09-22T12:42:30+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2.jpg</image:loc>
			<image:caption><![CDATA[Nioh 2]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/fallDamage.png</image:loc>
			<image:caption><![CDATA[Shows the relation between the last y-coordinate, y-coordinate, and fall damage.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2WhereYouWereSearchResults.png</image:loc>
			<image:caption><![CDATA[Shows the results of searching for the coordinates that track the last solid ground the player has stood on.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2HealthUpdateLocation.png</image:loc>
			<image:caption><![CDATA[Shows the health update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2DamageApplicationTraceStart.png</image:loc>
			<image:caption><![CDATA[Shows the code where we started our trace for the damage application code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2DamageApplicationTrace.png</image:loc>
			<image:caption><![CDATA[Shows the results of the trace for the damage application code.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/06/24/no-streams-until-vision/</loc>
		<lastmod>2021-10-08T14:06:12+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/WorkingOnVision.png</image:loc>
			<image:caption><![CDATA[Streams are on hiatus until the Vision app is developed.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/UglyStats.png</image:loc>
			<image:caption><![CDATA[Shows how Omnified stats are currently displayed on stream, in a very primitive and ugly fashion.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/NiceStatsInDev.png</image:loc>
			<image:caption><![CDATA[Shows some design-time "footage" of a Vision statistics view.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/11/12/goodbye-omnified/</loc>
		<lastmod>2021-11-12T12:26:32+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/11/ApocPreview.png</image:loc>
			<image:caption><![CDATA[A little sneak peak at an Apocalypse event being shown on a screen overlay via Vision.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/09/22/hacking-nioh-part-3/</loc>
		<lastmod>2021-11-14T17:42:09+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2.jpg</image:loc>
			<image:caption><![CDATA[Nioh 2]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2UnmodifiedLocationUpdateHook.png</image:loc>
			<image:caption><![CDATA[Shows the location update code for Nioh 2.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2MoveApplicationTraceStartActualWinner.png</image:loc>
			<image:caption><![CDATA[Shows the code where we started the trace for the movement application code from.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/NiohMovementApplicationTraceAtLocationUpdate.png</image:loc>
			<image:caption><![CDATA[Shows the results of the trace for the movement application code, positioned at the location update code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2MovementApplicationTraceFoundUpdatedRegister.png</image:loc>
			<image:caption><![CDATA[Shows the source of the update location coordinates in the trace.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2MovementApplicationUpdatedCoordsRegisterWrites.png</image:loc>
			<image:caption><![CDATA[Shows the code writing to the source of new location coordinates.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/Nioh2MovementApplicationCode.png</image:loc>
			<image:caption><![CDATA[Shows the movement application code.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/02/10/composedexportvalue-mef2/</loc>
		<lastmod>2022-02-22T05:14:00+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/02/ComposeExportedSad.png</image:loc>
			<image:caption><![CDATA[MEF2 doesn't provide a way to generate exports on the fly, which makes me a sad boi.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/12/04/polymorphic-json-deserialization/</loc>
		<lastmod>2022-02-22T05:39:04+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/12/StatisticsDeserialization.png</image:loc>
			<image:caption><![CDATA[Shows the serialized objects via a debugger.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/01/17/code-repository-created/</loc>
		<lastmod>2022-02-22T05:41:43+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/BadEchoCode.png</image:loc>
			<image:caption><![CDATA[Some code, zoomed in. Fancy.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/02/15/segmenting-contracts-dispatchproxy/</loc>
		<lastmod>2022-02-22T06:07:39+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/02/NoMoreDynamicProxy.png</image:loc>
			<image:caption><![CDATA[.NET 5.0 comes with some useful new functionality such as DispatchProxy, removing any need by me for Castle.Core.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/02/SegmentingAContract.png</image:loc>
			<image:caption><![CDATA[Shows how a contract can be segmented so different methods will have their calls routed to different plugins.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/08/14/omnified-is-back/</loc>
		<lastmod>2022-08-14T18:55:55+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/WutDidYouSay.png</image:loc>
			<image:caption><![CDATA[Omnified is back baby.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/05/06/modern-net-versioning/</loc>
		<lastmod>2022-11-16T01:18:07+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/01/20/canceling-animations/</loc>
		<lastmod>2022-11-16T01:18:25+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/01/CancelAnimations.png</image:loc>
			<image:caption><![CDATA[Canceling WPF Animations Made Simple]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/01/AnimationsToCancel.gif</image:loc>
			<image:caption><![CDATA[Shows a growing collection of child controls whose animations are starting to clutter up the screen. We must cancel them!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/01/CanceledAnimations.gif</image:loc>
			<image:caption><![CDATA[Shows existing animations being canceled when new events get added.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/12/17/net-6-xaml-mayhem/</loc>
		<lastmod>2022-11-16T01:18:41+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/12/BlowingUpMyXAML.png</image:loc>
			<image:caption><![CDATA[.NET 6 is doing some strange things to the names of my projects...]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/10/05/fixing-hacks-after-patch/</loc>
		<lastmod>2022-11-16T01:18:56+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/09/FixingHacksAfterGameGetsPatched.png</image:loc>
			<image:caption><![CDATA[Let's go over the easiest ways to fix hacks no longer working because a game was patched.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/Offset.png</image:loc>
			<image:caption><![CDATA[Shows how a hack targets a particular instruction, with the location of the offset being in the highlighted portion of the code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/FullInjection.png</image:loc>
			<image:caption><![CDATA[Shows how to do a Full Injection in Cheat Engine.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/AOBInjection.png</image:loc>
			<image:caption><![CDATA[Shows how to do an AOB injection in Cheat Engine.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/Shifts.png</image:loc>
			<image:caption><![CDATA[Shows a lovingly crafted diagram that tries to describe how instructions shift when new code is inserted.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/RecordYourUniqueAOB.png</image:loc>
			<image:caption><![CDATA[Shows a snippet of an Omnified injection, with the recorded unique array of bytes highlighted.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/SearchArrayOfBytesValueType.png</image:loc>
			<image:caption><![CDATA[Shows the start of a search using the unique array of bytes, where the Value Type must be set to Array of byte.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/SearchWritableMemory.png</image:loc>
			<image:caption><![CDATA[Shows how to specify that we search for writable memory.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/ArrayOfBytesSearchResults.png</image:loc>
			<image:caption><![CDATA[Shows the results of a unique array of bytes search.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/StaticMemoryAddressInHook.png</image:loc>
			<image:caption><![CDATA[Shows problematic Omnified Nioh 2 hooking code that will be hard to find after a patch.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/02/04/embedded-raw-media/</loc>
		<lastmod>2023-02-21T01:37:58+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/02/EmbeddingMedia.png</image:loc>
			<image:caption><![CDATA[.NET 7 Embedded Raw Media Using ResourceCreator]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/02/ProjectContainingLinkedResource.png</image:loc>
			<image:caption><![CDATA[Shows how a resource linked at compile time occupies a place in our project's structure.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/02/ResourcePersistence.png</image:loc>
			<image:caption><![CDATA[Shows how we can change how a resource is persisted to our resources file.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/02/EmbeddedRuntimeException.png</image:loc>
			<image:caption><![CDATA[System.Runtime.Serialization.SerializationException: 'Type 'System.IO.MemoryStream' in Assembly 'System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' is not marked as serializable.'
]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/11/15/monogame-pipeline-net7/</loc>
		<lastmod>2023-02-21T01:38:16+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/11/PipelineExtensionsWith7.png</image:loc>
			<image:caption><![CDATA[MonoGame Pipeline Extensions with .NET 7]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/07/MGCBEditor.png</image:loc>
			<image:caption><![CDATA[Shows the MonoGame content builder UI.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/11/ContentBuilderBadEchoTask.png</image:loc>
			<image:caption><![CDATA[Shows the NuGet package required for .NET 7 friendly pipeline fun.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/11/ContentBuilderTools.png</image:loc>
			<image:caption><![CDATA[Shows the NuGet .NET tool packages required for .NET 7 friendly pipeline fun.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/20/automatically-posting-wordpress-posts-to-discord/</loc>
		<lastmod>2023-02-21T01:40:02+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/DiscordEditChannel.png</image:loc>
			<image:caption><![CDATA[Automatically posting WordPress posts to Discord will require us to edit our channel. Shows us clicking "Edit Channel" on the channel we want announcements in.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/DiscordNewWebhook.png</image:loc>
			<image:caption><![CDATA[Shows us clicking on the New Webhook button to create our new Wordpress Webhook]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/10/DiscordWebhookCopy.png</image:loc>
			<image:caption><![CDATA[Shows us clicking on "Copy Webhook URL" in our new Webhook.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/10/11/smooth-health-bars/</loc>
		<lastmod>2023-02-21T01:40:49+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/VisionBars.gif</image:loc>
			<image:caption><![CDATA[Shows an animated bar behind a health fractional statistic.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/FractionalBefore.png</image:loc>
			<image:caption><![CDATA[A look at a fractional statistic during design-time, before our changes.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/10/FractionalAfter.png</image:loc>
			<image:caption><![CDATA[A look at a fractional statistic during design-time, after our changes.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/12/20/wpf-shadow-accessors/</loc>
		<lastmod>2023-02-21T01:40:54+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/MysteriousAccessorsUpdated-e1645606880791.png</image:loc>
			<image:caption><![CDATA[WPF's Mysterious Attached Property Shadow Accessors]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/08/04/drawing-tiles/</loc>
		<lastmod>2023-02-21T01:41:08+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/DrawingTilesMonoGame.png</image:loc>
			<image:caption><![CDATA[Drawing Tiles With MonoGame]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/TileTriangles.png</image:loc>
			<image:caption><![CDATA[Shows how a tile square can be drawn with two triangle primitives.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/TileTexels.png</image:loc>
			<image:caption><![CDATA[Shows texel coordinates for a 64 x 16 pixel tile set.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/09/28/unit-testing-monogame/</loc>
		<lastmod>2023-02-21T01:41:16+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/09/UnitTestMonoGame.png</image:loc>
			<image:caption><![CDATA[Unit Testing MonoGame's Content Pipeline]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/02/07/safehandles-in-structs/</loc>
		<lastmod>2023-02-28T17:08:55+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/02/StatefulMarshalling.png</image:loc>
			<image:caption><![CDATA[Using SafeHandles in Structs via Stateful Marshalling]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/01/21/legacy-omnified-published/</loc>
		<lastmod>2023-03-15T05:57:18+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnigasmbigger.png</image:loc>
			<image:caption><![CDATA[New schedule!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/02/14/vision/</loc>
		<lastmod>2023-03-15T06:00:49+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/01/VisionOverview.png</image:loc>
			<image:caption><![CDATA[Vision: An Omnified Game Overlay Platform]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/01/SystemComponents.png</image:loc>
			<image:caption><![CDATA[Omnified code injected into a binary, exporting captured game data into message files that are parsed by Vision and its modules.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/01/DataCollectionCode.png</image:loc>
			<image:caption><![CDATA[apocalypse.asm: Here is some example data collection code found within the Apocalypse system's code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/MessagingCode.png</image:loc>
			<image:caption><![CDATA[messages.lua: Here is some example messaging code found within the Omnified hacking framework.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/omnDab3_224.png</image:loc>
			<image:caption><![CDATA[Omni Dab!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/AnchorPointLocations.png</image:loc>
			<image:caption><![CDATA[The various anchor points as they would appear on your screen that Vision attaches its modules to.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnigasmbigger.png</image:loc>
			<image:caption><![CDATA[New schedule!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionPluginsDirectory.png</image:loc>
			<image:caption><![CDATA[Here we see two comfy Vision modules, nestled inside a plugin directory.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/sus_112.png</image:loc>
			<image:caption><![CDATA[Omni Suspicious...]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionEntireScreen.png</image:loc>
			<image:caption><![CDATA[A full shot of Vision running on top of Omnified Nioh 2.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionStatistics.png</image:loc>
			<image:caption><![CDATA[A closeup of the Statistics module for Vision.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionStatisticsStamina.gif</image:loc>
			<image:caption><![CDATA[The Statistics module's stamina, shown side by side with the game's own meter, accurately reflecting changes to the player's stamina.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionWholeStatistics-e1644721677303.png</image:loc>
			<image:caption><![CDATA[These three statistics are all considered to be "whole statistics", even though two of them can be fractional in value (a percentage value of 100% is 1, 50% is 0.5, etc.).]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionStatisticsFractional-e1644721844843.png</image:loc>
			<image:caption><![CDATA[These two statistics are considered to be "fractional statistics", as each one can only be expressed by using both the current and maximum values.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionStatisticsCoordinates.png</image:loc>
			<image:caption><![CDATA[This statistic is considered to be a "coordinate statistic", since it is expressed through the use of a coordinate triplet value.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionStatisticGroups.png</image:loc>
			<image:caption><![CDATA[Two "statistic groups" are pictured here containing three and four "whole statistics", respectively.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionStatisticsMaxDamage.gif</image:loc>
			<image:caption><![CDATA[Normal operation of the Statistics module: in this case, an explosive update being made to the maximum damage received stat after the player gets walloped by the enemy.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionHideShow.gif</image:loc>
			<image:caption><![CDATA[If Vision actually does get in the way, a simple button press gets it out of sight, out of mind -- until we want it back.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionApocalypse-e1644706022651.png</image:loc>
			<image:caption><![CDATA[A closeup of the Apocalypse module for Vision.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/DieRoll.png</image:loc>
			<image:caption><![CDATA[The die view used for primary Apocalypse rolls, as seen in the XAML designer, bound to an event with a die roll of 5.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/RiskOfMurderDieRoll.png</image:loc>
			<image:caption><![CDATA[The die view used for "risk of murder" Apocalypse rolls, as seen in the XAML designer, bound to an event with a die roll of 5. This die will kill ya!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionApocalypseMurdered.gif</image:loc>
			<image:caption><![CDATA[Normal operation of the Apocalypse module: in this case, the player rolling bad on a "risk of murder" roll and subsequently being...murdered!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/VisionApocalypseSampleEvents.gif</image:loc>
			<image:caption><![CDATA[There are quite a few different events that can occur with the Apocalypse system; its Vision module tries to communicate these events to us in the best way possible.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/06/07/how-to-push-sse-registers/</loc>
		<lastmod>2023-03-15T06:01:49+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/06/PushSSE.png</image:loc>
			<image:caption><![CDATA[Let's figure out how to backup these gigantic 128-bit registers...]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/25/tombstone-ds-ii/</loc>
		<lastmod>2023-03-15T06:05:09+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2020/10/25/tombstone-hzd/</loc>
		<lastmod>2023-03-15T06:06:05+00:00</lastmod>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/05/11/clipping-regions/</loc>
		<lastmod>2023-05-13T04:16:36+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/05/ClippingRegions.png</image:loc>
			<image:caption><![CDATA[Clipping Regions with MonoGame]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/05/LabelSizedToText.png</image:loc>
			<image:caption><![CDATA[A white bordered text label sized to fit its content.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/05/LabelTextNotClipped.png</image:loc>
			<image:caption><![CDATA[The text remains, even though the label has been shrunk.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/05/LabelTextClipped.png</image:loc>
			<image:caption><![CDATA[The shrunken label now clips its text.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2022/08/17/extending-pipeline/</loc>
		<lastmod>2023-09-25T00:58:59+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/ExtendingContentPipeline.png</image:loc>
			<image:caption><![CDATA[Extending MonoGame's Content Pipeline]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/AddingExtensionReference.png</image:loc>
			<image:caption><![CDATA[Shows how a pipeline extension reference is added via the MGCB editor.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/PipelineExtension.png</image:loc>
			<image:caption><![CDATA[Shows all the various parts and components for a content pipeline extension.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/NewPipelineProject.png</image:loc>
			<image:caption><![CDATA[Shows a pipeline extension C# template.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/SampleExtensionProject.png</image:loc>
			<image:caption><![CDATA[Shows the contents of a new pipeline extension project.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/08/FinishedProjectContents.png</image:loc>
			<image:caption><![CDATA[Shows the finished set of types we'll be implementing for our extension.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/omnDab3_224.png</image:loc>
			<image:caption><![CDATA[Omni Dab!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/09/24/msdf-fonts/</loc>
		<lastmod>2023-09-26T22:28:17+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/MSDFTitle.png</image:loc>
			<image:caption><![CDATA[Multi-Channel Signed Distance Field Fonts with MonoGame]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/ScaledSpriteFont-e1695549151639.png</image:loc>
			<image:caption><![CDATA[Shows the visual artifacting evident when scaling sprite fonts.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/ScaledMSDF-e1695549128985.png</image:loc>
			<image:caption><![CDATA[Shows the superior scaling capability MSDF fonts.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/hSDF.png</image:loc>
			<image:caption><![CDATA[Shows a single-channel signed distance field font of the letter 'H'.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/hMSDF.png</image:loc>
			<image:caption><![CDATA[Shows a multi-channel signed distance field font of the letter 'H'.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/09/29/msdf-fonts-2/</loc>
		<lastmod>2023-09-29T08:53:56+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/MSDF2.png</image:loc>
			<image:caption><![CDATA[Multi-Channel Signed Distance Field Fonts with MonoGame - Part 2]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/FlaxyDiagram.png</image:loc>
			<image:caption><![CDATA[Shows the word 'Flaxy' rendered as MSDF text with some of its measurements pointed out.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/ModelingGlyphs.png</image:loc>
			<image:caption><![CDATA[Shows the process of plotting vertex data for the text 'Sx', with each glyph being composed of two triangle primitives.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/NonOptimizedTiny-e1695968491142.png</image:loc>
			<image:caption><![CDATA[Shows tiny MSDF text using a non-optimized shader.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/OptimizedTiny-e1695968586823.png</image:loc>
			<image:caption><![CDATA[Shows tiny MSDF text using an optimized shader.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/sus_112.png</image:loc>
			<image:caption><![CDATA[Omni Suspicious...]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/09/PuttingItTogether.png</image:loc>
			<image:caption><![CDATA[Shows the result of running our sample code.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/omnDab3_224.png</image:loc>
			<image:caption><![CDATA[Omni Dab!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/12/29/local-window-messages/</loc>
		<lastmod>2024-01-17T00:23:37+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/12/LocalWindowMessages.png</image:loc>
			<image:caption><![CDATA[Managed Interception of Local Window Messages Using Subclassing]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/omnDab3_224.png</image:loc>
			<image:caption><![CDATA[Omni Dab!]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2024/01/13/external-window-messages/</loc>
		<lastmod>2024-01-17T16:17:27+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/01/ExternalWindowMessagesUsingHooks.png</image:loc>
			<image:caption><![CDATA[Managed Interception of External Window Messages Using Win32 Hooks]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/01/spyxx.png</image:loc>
			<image:caption><![CDATA[Shows a screenshot of the Spy++ (spyxx.exe) tool.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/01/CreatingNativeDll.png</image:loc>
			<image:caption><![CDATA[Shows us creating a native DLL project in Visual Studio.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2024/01/17/message-queue-messages/</loc>
		<lastmod>2024-01-17T16:29:49+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/01/MessageQueueMessages.png</image:loc>
			<image:caption><![CDATA[Managed Interception of Message Queue Messages Using Win32 Hooks]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2020/09/omnigasm112-e1601023634957.png</image:loc>
			<image:caption><![CDATA[Yay, we're done.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/08/02/alpha-spritebatch/</loc>
		<lastmod>2024-05-16T18:19:46+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/ChangingOpacity.png</image:loc>
			<image:caption><![CDATA[Changing Opacity of an Entire MonoGame SpriteBatch]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2022/02/sus_112.png</image:loc>
			<image:caption><![CDATA[Omni Suspicious...]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/08/AlphaSpriteBatch.gif</image:loc>
			<image:caption><![CDATA[Shows opacity being applied to an entire SpriteBatch.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2024/09/24/aws-lambda-json-logs/</loc>
		<lastmod>2024-09-25T01:36:47+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/09/SimpleJsonLogging.png</image:loc>
			<image:caption><![CDATA[Simple JSON Logging with AWS Lambda Running .NET]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/09/GrossLogs.png</image:loc>
			<image:caption><![CDATA[A plain ol' blob of plaintext.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/09/EditLambdaLogging.png</image:loc>
			<image:caption><![CDATA[Here we can change the log format of our Lambda function.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/09/NiceLogs.png</image:loc>
			<image:caption><![CDATA[Nice logs.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/07/17/automated-versioning-with-github/</loc>
		<lastmod>2024-12-08T05:42:36+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/AutomatedVersioning.png</image:loc>
			<image:caption><![CDATA[Automated Versioning with GitHub]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/AddingSecrets.png</image:loc>
			<image:caption><![CDATA[Click on "Actions" under "Secrets and variables" to add secrets required by our workflows.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/ActionsClick.png</image:loc>
			<image:caption><![CDATA[Click on "Actions" to add our new workflows.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/NewWorkflow.png</image:loc>
			<image:caption><![CDATA[You'll need to his the "New workflow" button to add one of our new workflows if the repository already has had a workflow added to it.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/WorkflowTemplates.png</image:loc>
			<image:caption><![CDATA[Our organization's workflow templates we just created.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/CommitChanges.png</image:loc>
			<image:caption><![CDATA[Click the "Commit changes..." button to finish adding the new workflow into your repository.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/07/RunningPublishWorkflow.png</image:loc>
			<image:caption><![CDATA[Our Publish Release workflow can be manually triggered as pictured.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2024/12/09/reusable-github-workflows/</loc>
		<lastmod>2024-12-22T03:33:57+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/12/ReusableWorkflows.png</image:loc>
			<image:caption><![CDATA[Reusable CI/CD GitHub Workflows]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2024/12/CIJobs.png</image:loc>
			<image:caption><![CDATA[Reusable CI/CD GitHub Workflows - Example Run]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2023/01/14/fast-simple-quadtree/</loc>
		<lastmod>2025-06-29T00:47:00+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2023/01/FastSimpleQuadtree.png</image:loc>
			<image:caption><![CDATA[A Fast and Simple Quadtree in C#]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2025/07/05/team-sqs-queues/</loc>
		<lastmod>2025-07-06T02:36:21+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2025/06/SQSQueues.png</image:loc>
			<image:caption><![CDATA[Debugging AWS SQS Queues in a Team Environment]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2025/06/SQSInput.png</image:loc>
			<image:caption><![CDATA[Diagram showing the overall process involving our input queue.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2025/06/SQSInputOutput.png</image:loc>
			<image:caption><![CDATA[Diagram showing a more complex process involving our input and output queues.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/01/26/net-library-log/</loc>
		<lastmod>2025-07-23T02:46:10+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/LoggingDerp.png</image:loc>
			<image:caption><![CDATA[Overexposure to heavy-duty logging frameworks can leave one in a state of derp.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/01/LoggingDependencies.png</image:loc>
			<image:caption><![CDATA[There be some unexpected dependencies here for this logging framework.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2025/09/03/fluent-theme-not-a-theme/</loc>
		<lastmod>2025-10-22T02:00:17+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2025/09/WPFGalleryApp.png</image:loc>
			<image:caption><![CDATA[The Fluent theme looks nice.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2025/09/GoodDisabledEnabledButton.png</image:loc>
			<image:caption><![CDATA[The buttons look good.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2025/09/BadDisabledEnabledButton.png</image:loc>
			<image:caption><![CDATA[The buttons do not look good.]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2025/10/25/wpf-with-generic-host/</loc>
		<lastmod>2025-10-26T03:40:53+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2025/10/WPFHostThumbnail.png</image:loc>
			<image:caption><![CDATA[Running WPF Applications with a Generic Host]]></image:caption>
		</image:image>
	</url>
	<url>
		<loc>https://badecho.com/index.php/2021/07/26/usable-design-time-data/</loc>
		<lastmod>2025-11-20T01:44:34+00:00</lastmod>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/UseableDesignTime.png</image:loc>
			<image:caption><![CDATA[Give me my sample data!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/NoDataTab.png</image:loc>
			<image:caption><![CDATA[Where's mah data tab!]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/WholeStatisticsViewDesignTime.png</image:loc>
			<image:caption><![CDATA[The view displays the sample data, in this case a sample whole valued Omnified statistic.]]></image:caption>
		</image:image>
		<image:image>
			<image:loc>https://badecho.com/wp-content/uploads/2021/07/StatisticsViewWrong.png</image:loc>
			<image:caption><![CDATA[Shows design-time data consisting of values that are not what I specified in the design-time data context for the view.]]></image:caption>
		</image:image>
	</url>
</urlset>
<!-- XML Sitemap generated by Yoast SEO -->