<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.sotn.fun/wiki_wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bismurphy</id>
	<title>Castlevania: Symphony of the Night Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.sotn.fun/wiki_wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bismurphy"/>
	<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki/Special:Contributions/Bismurphy"/>
	<updated>2026-04-16T14:09:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=97</id>
		<title>File:Map rooms.png</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=97"/>
		<updated>2026-03-17T23:58:53Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Bismurphy uploaded a new version of File:Map rooms.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A map of all the rooms in the game, colored by their stage overlay and numbered by their internal numbering.&lt;br /&gt;
&lt;br /&gt;
Acquired from a random Discord post; original source and credit unknown - hopefully someone comes along who can claim responsibility!&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=TPAGE_layout&amp;diff=69</id>
		<title>TPAGE layout</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=TPAGE_layout&amp;diff=69"/>
		<updated>2025-07-02T12:16:42Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;The game stores data in GPU VRAM organized in texture pages, or tpages. They are laid out in the VRAM as follows:  File:annotated_tpages.png  This may be helpful for debugging and tracking of textures.  Note that the game&amp;#039;s two framebuffers are held in tpages 0 through 7.  Since the game is 256x240 (widthxheight), the height of 240 leaves 16 extra rows of pixels available. These are used for the color lookup tables (also known as CLUTs, or palettes). These are visibl...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The game stores data in GPU VRAM organized in texture pages, or tpages. They are laid out in the VRAM as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:annotated_tpages.png]]&lt;br /&gt;
&lt;br /&gt;
This may be helpful for debugging and tracking of textures.&lt;br /&gt;
&lt;br /&gt;
Note that the game&#039;s two framebuffers are held in tpages 0 through 7.&lt;br /&gt;
&lt;br /&gt;
Since the game is 256x240 (widthxheight), the height of 240 leaves 16 extra rows of pixels available. These are used for the color lookup tables (also known as CLUTs, or palettes). These are visible in the screenshot along the lower edge of tpages 0 through 7. They actually also bleed into tpages 8 through B as well.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=File:Annotated_tpages.png&amp;diff=68</id>
		<title>File:Annotated tpages.png</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=File:Annotated_tpages.png&amp;diff=68"/>
		<updated>2025-07-02T12:14:16Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Annotating the Tpages to show where each address lives in vram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Annotating the Tpages to show where each address lives in vram&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=47</id>
		<title>File:Map rooms.png</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=47"/>
		<updated>2025-02-06T02:46:31Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Bismurphy uploaded a new version of File:Map rooms.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A map of all the rooms in the game, colored by their stage overlay and numbered by their internal numbering.&lt;br /&gt;
&lt;br /&gt;
Acquired from a random Discord post; original source and credit unknown - hopefully someone comes along who can claim responsibility!&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Overlay&amp;diff=41</id>
		<title>Talk:Overlay</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Overlay&amp;diff=41"/>
		<updated>2024-11-22T16:34:54Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;I wonder if it might make sense to name this &amp;quot;PS1 memory map&amp;quot; or something? Doesn&amp;#039;t hugely matter but just throwing out the idea. Thoughts, User:Sulaco? Either way, thanks for continuing to contribute to this wiki!  ~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I wonder if it might make sense to name this &amp;quot;PS1 memory map&amp;quot; or something? Doesn&#039;t hugely matter but just throwing out the idea. Thoughts, [[User:Sulaco]]? Either way, thanks for continuing to contribute to this wiki!&lt;br /&gt;
&lt;br /&gt;
[[User:Bismurphy|Bismurphy]] ([[User talk:Bismurphy|talk]]) 16:34, 22 November 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Glitches&amp;diff=38</id>
		<title>Glitches</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Glitches&amp;diff=38"/>
		<updated>2024-11-13T02:55:59Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a list of known glitches in the game - notable glitches may get their own pages later on down the line.&lt;br /&gt;
&lt;br /&gt;
=== Shiftline ===&lt;br /&gt;
&lt;br /&gt;
Shiftline is a glitch that allows you to drop out the side of a room instead of moving to the next screen.&lt;br /&gt;
&lt;br /&gt;
=== Reverse Shiftline ===&lt;br /&gt;
&lt;br /&gt;
Reverse Shiftline lets you skip over one room on the map.&lt;br /&gt;
&lt;br /&gt;
=== Infinity Glitch ===&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=5RbaHToSSuA&lt;br /&gt;
&lt;br /&gt;
The Infinity Glitch involves a convoluted series of steps in the Underground Caverns which results in Alucard being able to collect items without them being removed from the map. He can pick up weapons, Life Max Ups, or other pickups, then leave the screen and come back, and the item will have respawned. The exact circumstances that allow this trick to work are unknown, and have mostly been determined through experimentation. The issue may be related to filling Entity slots and not having slots available for necessary game entities. This merits further study, especially with the decomp.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Glitches&amp;diff=37</id>
		<title>Glitches</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Glitches&amp;diff=37"/>
		<updated>2024-11-13T02:29:10Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a list of known glitches in the game - notable glitches may get their own pages later on down the line.&lt;br /&gt;
&lt;br /&gt;
=== Shiftline ===&lt;br /&gt;
&lt;br /&gt;
Shiftline is a glitch that allows you to drop out the side of a room instead of moving to the next screen.&lt;br /&gt;
&lt;br /&gt;
=== Reverse Shiftline ===&lt;br /&gt;
&lt;br /&gt;
Reverse Shiftline lets you skip over one room on the map.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Glitches&amp;diff=36</id>
		<title>Glitches</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Glitches&amp;diff=36"/>
		<updated>2024-11-13T02:28:17Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;This page serves as a list of known glitches in the game - notable glitches may get their own pages later on down the line.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a list of known glitches in the game - notable glitches may get their own pages later on down the line.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=35</id>
		<title>Entity Identification</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=35"/>
		<updated>2024-11-01T00:04:35Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When doing decomp, it can be tricky to identify what entity is associated to a particular function. This page will list methods for doing this.&lt;br /&gt;
&lt;br /&gt;
==Known entity, unknown function, if Enemy==&lt;br /&gt;
&lt;br /&gt;
If you know an entity of interest, and want to find its function, here is a method that works if the entity is an enemy.&lt;br /&gt;
&lt;br /&gt;
1) Open up a RAM viewer in an emulator. Look at address 80073490. This is PLAYER.unkB8.&lt;br /&gt;
&lt;br /&gt;
2) Touch (and get hurt by) the enemy of interest. A pointer to that enemy gets stored into 80073490.&lt;br /&gt;
&lt;br /&gt;
3) Look at the data stored at that pointer. That is the entity that hurt you; look at its PfnEntityUpdate function to see what its function is.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=34</id>
		<title>Entity Identification</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=34"/>
		<updated>2024-11-01T00:03:43Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When doing decomp, it can be tricky to identify what entity is associated to a particular function. This page will list methods for doing this.&lt;br /&gt;
&lt;br /&gt;
==Known entity, unknown function==&lt;br /&gt;
&lt;br /&gt;
If you know an entity of interest, and want to find its function, here is a method that works if the entity is an enemy.&lt;br /&gt;
&lt;br /&gt;
1) Open up a RAM viewer in an emulator. Look at address 80073490. This is PLAYER.unkB8.&lt;br /&gt;
&lt;br /&gt;
2) Touch (and get hurt by) the enemy of interest. A pointer to that enemy gets stored into 80073490.&lt;br /&gt;
&lt;br /&gt;
3) Look at the data stored at that pointer. That is the entity that hurt you; look at its PfnEntityUpdate function to see what its function is.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=33</id>
		<title>Entity Identification</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=33"/>
		<updated>2024-11-01T00:02:41Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When doing decomp, it can be tricky to identify what entity is associated to a particular function. This page will list methods for doing this.&lt;br /&gt;
&lt;br /&gt;
#Known entity, unknown function&lt;br /&gt;
&lt;br /&gt;
If you know an entity of interest, and want to find its function, here is a method that works if the entity is an enemy.&lt;br /&gt;
&lt;br /&gt;
1) Open up a RAM viewer in an emulator. Look at address 80073490. This is PLAYER.unkB8.&lt;br /&gt;
&lt;br /&gt;
2) Touch (and get hurt by) the enemy of interest. A pointer to that enemy gets stored into 80073490.&lt;br /&gt;
&lt;br /&gt;
3) Look at the data stored at that pointer. That is the entity that hurt you; look at its PfnEntityUpdate function to see what its function is.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=32</id>
		<title>Entity Identification</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Entity_Identification&amp;diff=32"/>
		<updated>2024-11-01T00:02:13Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;When doing decomp, it can be tricky to identify what entity is associated to a particular function. This page will list methods for doing this.  If you know an entity of interest, and want to find its function, here is a method that works if the entity is an enemy.  1) Open up a RAM viewer in an emulator. Look at address 80073490. This is PLAYER.unkB8.  2) Touch (and get hurt by) the enemy of interest. A pointer to that enemy gets stored into 80073490.  3) Look at the da...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When doing decomp, it can be tricky to identify what entity is associated to a particular function. This page will list methods for doing this.&lt;br /&gt;
&lt;br /&gt;
If you know an entity of interest, and want to find its function, here is a method that works if the entity is an enemy.&lt;br /&gt;
&lt;br /&gt;
1) Open up a RAM viewer in an emulator. Look at address 80073490. This is PLAYER.unkB8.&lt;br /&gt;
&lt;br /&gt;
2) Touch (and get hurt by) the enemy of interest. A pointer to that enemy gets stored into 80073490.&lt;br /&gt;
&lt;br /&gt;
3) Look at the data stored at that pointer. That is the entity that hurt you; look at its PfnEntityUpdate function to see what its function is.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=30</id>
		<title>Talk:Stage</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=30"/>
		<updated>2024-10-29T14:49:17Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Remove resolved conversation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=26</id>
		<title>Talk:Stage</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=26"/>
		<updated>2024-10-26T00:42:54Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Sulaco]] Looks like you have two RNZ0s, I imagine clock tower should be RNZ1?&lt;br /&gt;
&lt;br /&gt;
[[User:Bismurphy|Bismurphy]] ([[User talk:Bismurphy|talk]]) 00:42, 26 October 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=25</id>
		<title>Talk:Stage</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=25"/>
		<updated>2024-10-26T00:42:37Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Sulaco]] Looks like you have two RNZ0s, I imagine clock tower should be RNZ1?&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=24</id>
		<title>Talk:Stage</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Talk:Stage&amp;diff=24"/>
		<updated>2024-10-26T00:41:36Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;@Sulaco (not sure if tagging works in mediawiki...) Looks like you have two RNZ0s, I imagine clock tower should be RNZ1?&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;@Sulaco (not sure if tagging works in mediawiki...) Looks like you have two RNZ0s, I imagine clock tower should be RNZ1?&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Main_Page&amp;diff=21</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Main_Page&amp;diff=21"/>
		<updated>2024-10-25T03:20:26Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello and welcome to the Castlevania:SOTN wiki.&lt;br /&gt;
&lt;br /&gt;
This is meant to hold all information relating to SOTN. The hope is that it can be more comprehensive than the Fandom Castlevania wiki, which does have lots of information, but does not go in-depth on things like particular enemies, items, speedrun tricks, glitches, and more.&lt;br /&gt;
&lt;br /&gt;
As of now, the content is extremely sparse, but hopefully that can change over time.&lt;br /&gt;
&lt;br /&gt;
If you have questions, suggestions, or complaints, please contact Bismurphy. Thanks!&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=RNG&amp;diff=20</id>
		<title>RNG</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=RNG&amp;diff=20"/>
		<updated>2024-10-23T23:00:46Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: cap rng&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Symphony of the Night uses [https://en.wikipedia.org/wiki/Pseudorandom_number_generator| Pseudo-Random Number Generators] when randomness is needed in the game. There are two PRNGs that are currently known about (dubbed Nice and Evil), and each is responsible for handling the randomness of different events in the game.&lt;br /&gt;
&lt;br /&gt;
In the decompiled code, we use &amp;quot;Random()&amp;quot; for the Nice RNG, and &amp;quot;rand()&amp;quot; for Evil RNG.&lt;br /&gt;
&lt;br /&gt;
Both RNGs are set to an initial value of 0 on startup (NOTE: On Saturn the initial value for the Evil RNG is actually 1 instead of 0). For the most part, the Evil RNG is advanced once every frame, even if the player isn&#039;t doing anything (hence why it has been dubbed Evil). Different functions within the game&#039;s code will also make specific calls to the Nice and Evil RNG, and so different events will trigger one or the other. A comprehensive list of what events call which RNG is not known, but a few events have been figured out. The Nice RNG is responsible for determining the location of Dracula&#039;s teleports in the Prologue, determining [[Flea Man]] jumps, determining the rotations of the Books in the Library, etc. The Evil RNG is responsible for determining whether or not an item drop occurs after an enemy dies and whether or not an item drop will be rare, uncommon, or common. The Evil RNG is also responsible for determining which Food item will drop from a Meal Ticket.&lt;br /&gt;
&lt;br /&gt;
Some events in the game are the result of calls to both, as in the case of [[Medusa Head]] spawn behavior.&lt;br /&gt;
&lt;br /&gt;
Both RNGs operate in a similar manner, but use different numbers as their multiplier, increment, and shift, as detailed in the code sections at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
== Python implementation of the Nice RNG used in SOTN ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
class NiceRng():&lt;br /&gt;
    def __init__(self, initial_seed: int=0):&lt;br /&gt;
        self.seed = initial_seed&lt;br /&gt;
    &lt;br /&gt;
    def current(self) -&amp;gt; int:&lt;br /&gt;
        result = self.seed &amp;gt;&amp;gt; 0x18&lt;br /&gt;
        return result&lt;br /&gt;
    &lt;br /&gt;
    def next(self) -&amp;gt; int:&lt;br /&gt;
        self.seed = 0xFFFFFFFF &amp;amp; ((self.seed * 0x01010101) + 1)&lt;br /&gt;
        result = self.current()&lt;br /&gt;
        return result&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python implementation of the Evil RNG used in SOTN ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
class EvilRng():&lt;br /&gt;
    def __init__(self, initial_seed: int=0):&lt;br /&gt;
        self.seed = initial_seed&lt;br /&gt;
    &lt;br /&gt;
    def current(self) -&amp;gt; int:&lt;br /&gt;
        result = 0x7FFF &amp;amp; (self.seed &amp;gt;&amp;gt; 0x10)&lt;br /&gt;
        return result&lt;br /&gt;
    &lt;br /&gt;
    def next(self) -&amp;gt; int:&lt;br /&gt;
        self.seed = 0xFFFFFFFF &amp;amp; ((self.seed * 0x41c64e6d) + 0x3039)&lt;br /&gt;
        result = self.current()&lt;br /&gt;
        return result&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=RNG&amp;diff=19</id>
		<title>RNG</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=RNG&amp;diff=19"/>
		<updated>2024-10-23T23:00:33Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: add decomp rng naming clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Symphony of the Night uses [https://en.wikipedia.org/wiki/Pseudorandom_number_generator| Pseudo-Random Number Generators] when randomness is needed in the game. There are two PRNGs that are currently known about (dubbed Nice and Evil), and each is responsible for handling the randomness of different events in the game.&lt;br /&gt;
&lt;br /&gt;
In the decompiled code, we use &amp;quot;Random()&amp;quot; for the Nice rng, and &amp;quot;rand()&amp;quot; for Evil RNG.&lt;br /&gt;
&lt;br /&gt;
Both RNGs are set to an initial value of 0 on startup (NOTE: On Saturn the initial value for the Evil RNG is actually 1 instead of 0). For the most part, the Evil RNG is advanced once every frame, even if the player isn&#039;t doing anything (hence why it has been dubbed Evil). Different functions within the game&#039;s code will also make specific calls to the Nice and Evil RNG, and so different events will trigger one or the other. A comprehensive list of what events call which RNG is not known, but a few events have been figured out. The Nice RNG is responsible for determining the location of Dracula&#039;s teleports in the Prologue, determining [[Flea Man]] jumps, determining the rotations of the Books in the Library, etc. The Evil RNG is responsible for determining whether or not an item drop occurs after an enemy dies and whether or not an item drop will be rare, uncommon, or common. The Evil RNG is also responsible for determining which Food item will drop from a Meal Ticket.&lt;br /&gt;
&lt;br /&gt;
Some events in the game are the result of calls to both, as in the case of [[Medusa Head]] spawn behavior.&lt;br /&gt;
&lt;br /&gt;
Both RNGs operate in a similar manner, but use different numbers as their multiplier, increment, and shift, as detailed in the code sections at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
== Python implementation of the Nice RNG used in SOTN ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
class NiceRng():&lt;br /&gt;
    def __init__(self, initial_seed: int=0):&lt;br /&gt;
        self.seed = initial_seed&lt;br /&gt;
    &lt;br /&gt;
    def current(self) -&amp;gt; int:&lt;br /&gt;
        result = self.seed &amp;gt;&amp;gt; 0x18&lt;br /&gt;
        return result&lt;br /&gt;
    &lt;br /&gt;
    def next(self) -&amp;gt; int:&lt;br /&gt;
        self.seed = 0xFFFFFFFF &amp;amp; ((self.seed * 0x01010101) + 1)&lt;br /&gt;
        result = self.current()&lt;br /&gt;
        return result&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python implementation of the Evil RNG used in SOTN ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
class EvilRng():&lt;br /&gt;
    def __init__(self, initial_seed: int=0):&lt;br /&gt;
        self.seed = initial_seed&lt;br /&gt;
    &lt;br /&gt;
    def current(self) -&amp;gt; int:&lt;br /&gt;
        result = 0x7FFF &amp;amp; (self.seed &amp;gt;&amp;gt; 0x10)&lt;br /&gt;
        return result&lt;br /&gt;
    &lt;br /&gt;
    def next(self) -&amp;gt; int:&lt;br /&gt;
        self.seed = 0xFFFFFFFF &amp;amp; ((self.seed * 0x41c64e6d) + 0x3039)&lt;br /&gt;
        result = self.current()&lt;br /&gt;
        return result&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Game_Versions&amp;diff=17</id>
		<title>Game Versions</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Game_Versions&amp;diff=17"/>
		<updated>2024-10-23T16:27:07Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SOTN has had many releases over the years. This page attempts to list all of them.&lt;br /&gt;
&lt;br /&gt;
Of course, these should have elaboration.&lt;br /&gt;
&lt;br /&gt;
PS1 US&lt;br /&gt;
&lt;br /&gt;
PS1 JP (1.0)&lt;br /&gt;
&lt;br /&gt;
PS1 JP (1.1)&lt;br /&gt;
&lt;br /&gt;
PS1 JP (1.2)&lt;br /&gt;
&lt;br /&gt;
Sega Saturn&lt;br /&gt;
&lt;br /&gt;
PSP (Dracula X Chronicles)&lt;br /&gt;
&lt;br /&gt;
Xbox 360 (Including Konami Classics)&lt;br /&gt;
&lt;br /&gt;
Tiger Game.Com&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Game_Versions&amp;diff=16</id>
		<title>Game Versions</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Game_Versions&amp;diff=16"/>
		<updated>2024-10-23T16:26:55Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SOTN has had many releases over the years. This page attempts to list all of them.&lt;br /&gt;
&lt;br /&gt;
Of course, these should have elaboration.&lt;br /&gt;
&lt;br /&gt;
PS1 US&lt;br /&gt;
&lt;br /&gt;
PS1 JP (1.0)&lt;br /&gt;
&lt;br /&gt;
PS1 JP (1.1)&lt;br /&gt;
&lt;br /&gt;
PS1 JP (1.2)&lt;br /&gt;
&lt;br /&gt;
PSP (Dracula X Chronicles)&lt;br /&gt;
&lt;br /&gt;
Xbox 360 (Including Konami Classics)&lt;br /&gt;
&lt;br /&gt;
Tiger Game.Com&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Game_Versions&amp;diff=15</id>
		<title>Game Versions</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Game_Versions&amp;diff=15"/>
		<updated>2024-10-23T16:26:47Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;SOTN has had many releases over the years. This page attempts to list all of them.  Of course, these should have elaboration.  PS1 US PS1 JP (1.0) PS1 JP (1.1) PS1 JP (1.2)  PSP (Dracula X Chronicles)  Xbox 360 (Including Konami Classics)  Tiger Game.Com&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SOTN has had many releases over the years. This page attempts to list all of them.&lt;br /&gt;
&lt;br /&gt;
Of course, these should have elaboration.&lt;br /&gt;
&lt;br /&gt;
PS1 US&lt;br /&gt;
PS1 JP (1.0)&lt;br /&gt;
PS1 JP (1.1)&lt;br /&gt;
PS1 JP (1.2)&lt;br /&gt;
&lt;br /&gt;
PSP (Dracula X Chronicles)&lt;br /&gt;
&lt;br /&gt;
Xbox 360 (Including Konami Classics)&lt;br /&gt;
&lt;br /&gt;
Tiger Game.Com&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=14</id>
		<title>Room IDs</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=14"/>
		<updated>2024-10-23T00:39:46Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a diagram showing the ID numbers for each room in each zone of the game. This was originally created by Forat Negre on Discord :)&lt;br /&gt;
&lt;br /&gt;
To find the ID for a room, set an emulator breakpoint on InitRoomEntities (for the appropriate overlay). Then, walk into the room of interest, and see what the `$a0` register is set to. This will be the ID of the room you&#039;re entering.&lt;br /&gt;
&lt;br /&gt;
[[File:Map rooms.png|options|caption]]&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Main_Page&amp;diff=13</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Main_Page&amp;diff=13"/>
		<updated>2024-10-21T23:59:14Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello and welcome to the Castlevania:SOTN wiki.&lt;br /&gt;
&lt;br /&gt;
This is meant to hold all information relating to SOTN. The hope is that it can be more comprehensive than the Fandom Castlevania wiki, which does have lots of information, but does not go in-depth on things like particular enemies, items, speedrun tricks, glitches, and more.&lt;br /&gt;
&lt;br /&gt;
As of now, the content is extremely sparse, but hopefully that can change over time.&lt;br /&gt;
&lt;br /&gt;
If you have questions, please contact Bismurphy. Thanks!&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=12</id>
		<title>Room IDs</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=12"/>
		<updated>2024-10-21T13:28:16Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a diagram showing the ID numbers for each room in each zone of the game. It has been shared on discord and lost its original credit; hopefully someone can come along and claim responsibility for it as it is quite helpful!&lt;br /&gt;
&lt;br /&gt;
To find the ID for a room, set an emulator breakpoint on InitRoomEntities (for the appropriate overlay). Then, walk into the room of interest, and see what the `$a0` register is set to. This will be the ID of the room you&#039;re entering.&lt;br /&gt;
&lt;br /&gt;
[[File:Map rooms.png|options|caption]]&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=11</id>
		<title>File:Map rooms.png</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=11"/>
		<updated>2024-10-21T04:05:46Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Bismurphy uploaded a new version of File:Map rooms.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A map of all the rooms in the game, colored by their stage overlay and numbered by their internal numbering.&lt;br /&gt;
&lt;br /&gt;
Acquired from a random Discord post; original source and credit unknown - hopefully someone comes along who can claim responsibility!&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=10</id>
		<title>Room IDs</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=10"/>
		<updated>2024-10-21T02:21:48Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a diagram showing the ID numbers for each room in each zone of the game. It has been shared on discord and lost its original credit; hopefully someone can come along and claim responsibility for it as it is quite helpful!&lt;br /&gt;
&lt;br /&gt;
[[File:Map rooms.png|options|caption]]&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=9</id>
		<title>Room IDs</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=9"/>
		<updated>2024-10-21T02:21:11Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a diagram showing the ID numbers for each room in each zone of the game.&lt;br /&gt;
&lt;br /&gt;
[[File:Map rooms.png|options|caption]]&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=8</id>
		<title>Room IDs</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=8"/>
		<updated>2024-10-21T02:21:01Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a diagram showing the ID numbers for each room in each zone of the game. I just gotta figure out how to upload images oops&lt;br /&gt;
&lt;br /&gt;
[[File:Map rooms.png|options|caption]]&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=7</id>
		<title>File:Map rooms.png</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=File:Map_rooms.png&amp;diff=7"/>
		<updated>2024-10-21T02:20:13Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: A map of all the rooms in the game, colored by their stage overlay and numbered by their internal numbering.

Acquired from a random Discord post; original source and credit unknown - hopefully someone comes along who can claim responsibility!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A map of all the rooms in the game, colored by their stage overlay and numbered by their internal numbering.&lt;br /&gt;
&lt;br /&gt;
Acquired from a random Discord post; original source and credit unknown - hopefully someone comes along who can claim responsibility!&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=6</id>
		<title>Room IDs</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Room_IDs&amp;diff=6"/>
		<updated>2024-10-21T02:14:29Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;Here is a diagram showing the ID numbers for each room in each zone of the game. I just gotta figure out how to upload images oops&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a diagram showing the ID numbers for each room in each zone of the game. I just gotta figure out how to upload images oops&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=User:Bismurphy&amp;diff=5</id>
		<title>User:Bismurphy</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=User:Bismurphy&amp;diff=5"/>
		<updated>2024-10-19T15:00:32Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;Hi! I am the admin for this wiki. I am also a primary contributor for the SOTN Decomp project. Please feel free to reach out to me if you have anything to talk about!&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi! I am the admin for this wiki. I am also a primary contributor for the SOTN Decomp project. Please feel free to reach out to me if you have anything to talk about!&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Richter&amp;diff=4</id>
		<title>Richter</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Richter&amp;diff=4"/>
		<updated>2024-10-18T17:34:31Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;Richter was supposed to be a good guy but then he became a bad guy.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Richter was supposed to be a good guy but then he became a bad guy.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Death_Skip&amp;diff=3</id>
		<title>Death Skip</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Death_Skip&amp;diff=3"/>
		<updated>2024-10-18T17:33:40Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;It is possible to skip the encounter with Death at the beginning of the game. There are a few methods for doing this.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It is possible to skip the encounter with Death at the beginning of the game. There are a few methods for doing this.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
	<entry>
		<id>https://www.sotn.fun/wiki_wiki/index.php?title=Alucard&amp;diff=2</id>
		<title>Alucard</title>
		<link rel="alternate" type="text/html" href="https://www.sotn.fun/wiki_wiki/index.php?title=Alucard&amp;diff=2"/>
		<updated>2024-10-18T17:33:10Z</updated>

		<summary type="html">&lt;p&gt;Bismurphy: Created page with &amp;quot;Alucard is the player character for SOTN.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alucard is the player character for SOTN.&lt;/div&gt;</summary>
		<author><name>Bismurphy</name></author>
	</entry>
</feed>