If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Notes:Raw Danger

From The Cutting Room Floor
Jump to navigation Jump to search

This page contains notes for the game Raw Danger.

Large map time values

Check if any of these are unused (get the byte values!). If any of them are unused, it may indicate unused areas (except possibly end-of-hour times?). These are used for the large map feature. These times are found on the large map when changing the byte value at 694C84.

December 24
8:00 (0, no flooding drawn on map)
9ː00 (1)
10ː00 (2)
11ː00 (3)
12ː03 (4)
12ː13 (5)
12ː57 (6)
13ː00 (7)
13ː11 (8)
13ː55 (9)
14ː00 (10, Slight flooding on left of map)
14ː06 (11, used for level 1_1_0 and 3_1_0)
14ː17 (12)
14ː20 (13)
14ː49 (14)
15ː00 (15)
15ː01 (16)
15ː32 (17)
15ː39 (18)
15ː53 (19)
16ː00 (20)
16ː02 (21)
16ː05 (22)
16ː16 (23)
16ː48 (24)
17ː00 (25, slight flooding on middle-top of map)
17ː03 (26)
17ː09 (27)
17ː34 (28)
18ː00 (29, slight flooding on bottom-left of map, moderate flooding on left region of map)
18ː03 (30)
18ː23 (31)
18ː30 (32)
19ː30 (33, slight flooding on bottom-right of map)
20ː00 (34, moderate flooding on bottom-right of map)
20ː14 (35)
20ː17 (36)
20ː48 (37)
21ː00 (38, severe flooding on bottom-right and left of map, moderate flooding on bottom left, X in center of map)
21ː56 (39)
22ː00 (40)
22ː18 (41)
22ː57 (42)
22ː58 (43)
23ː01 (44)
23ː10 (45)
23ː36 (46)
23ː53 (47)
December 25
0ː02 (severe flooding on bottom-left of map)
0:44
1:00
1:49
2:00
2:14
3:00
4:00
4:26
5:20
6:00
7:00
8:00
9:00
9:26
9:58
10:00
10:02
11:00
11:03
11:07
11:40
12:00
12:01
12:17
13:00 (five red X's appear on map, indicating dam and levee failures)
13:16
13:28 (Cascade Dam region (top of map) severely flooded)
13:51
14:00 (top-right region of map slightly flooded)
14:09
14:10
15:00 (top-left and right region of the map slightly flooded)
15:11
15:49
16:00
16:49
17:00 (top-right region of the map moderately flooded)
17:02
17:31
18:00
18:05
18:21
18:35
18:43
19:00 (slight flooding in middle of map, moderate flooding in right, top-middle part of map)
19:27
20:00 (severe flooding in top-right region of map, another X appears indicating another broken levee)
20:15
21:00
21:05
21:08
22:00 (another levee fails, top-left and top-middle of the map severely flooded)
23:00 (another levee fails)
23:07
23:53
December 26
00:00 (right of the map severely flooded)
0:29
1:00
2:00
3:00
4:00
5:00
5:12
5:23
6:00
6:57
7:00 (weather changes to Blizzard, haven't been reading weather/damage before this, sorry)
7:30
8:00
8:43
9:00
10:00 (middle of the map moderately flooded)
10:14
10:40
11:00
11:48
11:50
12:00
13:00
14:00
15:00
15:13
16:00
16:21
16:50
17:00
17:42
18:00 (middle of the map severely flooded)
19:00
20:00
21:00
22:00
23:00
December 27
Hours continue from 00:00, every hour until 12:00.

Potentially Cut Areas

Raw Danger maps/levels are arranged in the format "character_area_subarea" (e.g. 1_1_5 = Downtown Geo for Joshua), however there are some missing numbers in the game files, which may indicate cut content. Here is a list of those numbers:

01_01_02 (missing in demo TYPE-A/TYPE-B as well)
01_01_03 (missing in demo TYPE-A/TYPE-B as well)
01_01_04 (missing in demo TYPE-A/TYPE-B as well. Were these actually meant to be anything...? Earlier versions of Downtown, maybe?)
01_08_00 (Has a 2D map texture, which is the same as the one area 03_10_00 has (see here). This area also has sound effects listed in the SE folder. We can listen to these after converting them with PSound!)
02_08_03 (Only background sound effect files. We can listen to these after converting them with PSound! What about _01 and _02?)
03_04_00
03_12_00
03_13_00
03_14_00
04_01_00 (The fourth character is the only character to not have a "first" area. However, sound effects exist for this area in the "SE" folder. We can listen to these after converting them with PSound!)
05_05_00

Downtown Geo

This map likely underwent severe revamps between when it was first conceived and when the game was released. One example of this is the PAPCO mall design, although the atmosphere, obstacles in the road, along with amount of flooding seems to also have been changed. Isaac's Downtown Geo map (only used for a cutscene) features several subway entrances which aren't present on Joshua's and Amber's map. Downtown Geo also has _two_ dumpsters which can only be accessed by one character.

Unused Monorail Piece

This model w/ decal is located under one of the corners of the map, somewhere around -150, 20, 400 http://imgur.com/a/bGcQh

Unused GPS locations

Since there's no easy way to include these images on the article (maybe in a gallery, although I don't know if they are _that_ significant to include), I might as well put these here.

An interesting thing to note is that some of these additional menus have places which CAN be visited, such as Angelina.

Important Note: Cascade Dam has no unique description text and as such is not noted on the main page.

IremRD-GPSTextWestJunc.png IremRD-GPSTextEastJunc.png IremRD-GPSTextDelRayHighSchool.png IremRD-GPSTextUnionDistrictWIntersection.png IremRD-GPSTextLandmarkApartments.png IremRD-GPSTextDelRayPark.png IremRD-GPSTextCentralGeoDistrict.png IremRD-GPSTextMediaTower.png IremRD-GPSTextHudsonTunnel.png IremRD-GPSTextDowntown.png IremRD-GPSTextBanquetHall.png IremRD-GPSTextGeoPoliceStation.png IremRD-GPSTextNorCalPharmaceutical.png IremRD-GPSTextDelRayStation.png IremRD-GPSTextSewer.png IremRD-GPSTextCascadeDam.png

Character Health

Characters have a health value, which is pointed to from game memory 0x5EAC80 with offset 0x368. This value is 100 by default, and decrements by 20 every time the character takes a large fall. However, this value never goes below 1. Setting this value to 0 triggers a death. Is this a remnant from Disaster Report?

Camera Notes

For future reference because I didn't put such values on this page earlier:

0x20000000 is the base for game memory for PCSX2, so these values are relative to that. These values are for the follow camera for any character/vehicle/cutscene/present angle
Remember to add 20000000 to both the base and offsets in PCSX2 for pointers (e.g. 0x48F4E0, offset 144 becomes 0x2048F4E0, offset 20000144).

These values seem to update when the cutscene camera sequence progress increments -- in a cutscene, you may have to find operations which write to these values and disable them.

Pointer (0x48F4E0, offset 144) -- pointer for model/preset angle data which camera uses, setting this to 0 allows the camera to be moved around freely by editing nearby memory.
Pointer (0x48F4E0, offset 160) -- Camera position to the east (positive) or west (negative), based on the compass.
Pointer (0x48F4E0, offset 164) -- Camera height position (NOTE: Y Values in Raw Danger! are inverted, so -10 is higher than 0 and so on)
Pointer (0x48F4E0, offset 168) -- Camera position to the north (positive) or south (negative), based on the compass.
Pointer (0x48F4E0, offset 1B0) -- Camera pitch (-1 to 1, acts weirdly when changed in CE manually)
Pointer (0x48F4E0, offset 1B4) -- Camera yaw (-1 to 1, acts weirdly when changed in CE manually)
Pointer (0x48F4E0, offset 1B8) -- Camera ? (Not sure which one this controls)
Pointer (0x48F4E0, offset 35C) -- Camera zoom threshold (2.5 to 6.5 in normal use, controls how far the camera zooms in and out during normal gameplay with the right stick. If frozen to a value like 4 the player can zoom out infinitely, if the pointer still points to the model)
Pointer (0x48F4E0, offset 3b8) -- Camera zoom amount (can be changed freely)

--

0x6009AC -- Cutscene Camera Sequence Progress (how did I rotate the camera before during cutscenes??)
0x6009A8 -- Cutscene Sequence Pointer (points to specific sequence info)

Example pictures:
http://i.imgur.com/opE6apV.jpg
http://i.imgur.com/maTwC04.jpg
http://i.imgur.com/JqeWLDJ.jpg (weird how the bridge is really the only thing culled)
Cutscene editing:
http://i.imgur.com/8yK9dGP.jpg

Debug Mode?

In the two demo versions of the game, it is possible to trigger a debug mode which shows AI paths, among other things like triggers and camera paths. As shown here:
https://media.giphy.com/media/MCEjn3zNBETZK/giphy.gif

It doesn't seem to be possible to do this in the final version of the game. However, there is similar code for it but it's just not _functional_ as is, it may be workable with some digging though. The function starts at 0x0019DCD0 and ends at 0x0019DDD0. The instruction which reads a memory value at 48F658 (which if its value is 1 SHOULD trigger this mode) is located at 0x0019DCE0.

For the Japanese version of the game, the debug value is located at 48E1D8. It doesn't work here, either, however.

Broken Checkpoint

Raw Danger's Broken Checkpoint --

In 1_2_0 there is a checkpoint, checkpoint 9, that when activated causes a softlock if the player dies due to the player instantly redrowning when resuming.

Through my observations, it's not likely a problem with the checkpoint *itself*, but some sort of trigger that is activated as a result of the cutscene which happens immediately before this checkpoint itself. Setting your checkpoint to checkpoint 9 and loading the level will instantly drown you, but changing another checkpoint's position coords to where the checkpoint is just activates the cutscene instead, which collaborates the previous point.

The game seems to move your character immediately after the game loads, regardless of any checkpoint you set yourself to.

The true checkpoint's position is: -7.800000191 (-7.8), 5, 49.5

The game then tries to move you to: -7.90028286, 1.999999881, 56.49084901 (probably supposed to be -7.9, 2, 56.5) which is further up the stairs. You appear in this spot for one frame, but then instantly drown.

However, preventing the game from moving your character by changing all opcodes which change Joshua's position also prevent Joshua from drowning. I'm not sure why this is.

This glitch is region-specific and the game works as intended in the Japanese version!

However, changing the checkpoint ID to something else will still cause the player to be placed where that checkpoint's position is and then moved, still causing them to drown, like in the US version.

Instruction 0014975C (US) is responsible for this bug, it appears sets NPC positions for cutscenes and checkpoints. There are 4 times it is run when this checkpoint is loaded.

NOTE: 0013E944 is the real culprit, it's just that it won't activate if the other instruction doesn't. You can actually just blank out this instruction and replace it with nop, it's located at 0xCC1C4h in the .iso file (additionally at 0x3F9C0h in SLUS_215.01), although this will change the game CRC. This instruction sets Joshua's height relative to the waterplane on the level, although I'm confused as to why it does this.

v1 register contents:

Original (checkpoint) Value:
0x3F8000004243535B
0x40A00000C0F74952

Joshua's Broken Value:
0x3F8000004262AEF1
0x40367935C0FCCF1E

Working value (Stephanie's?):
0x3F8000004259C640
0x407C4324C1141A76

Chef's value:
0x3F80000042E80000
0x000000003F4CCCCD

That being said, Joshua's broken float values can be swapped out with Stephanie's. These are located in the iso at 345351B8h (E/W position, swap out 1ECFFCC0 with 761A14C1), 345351D8h (height position, swap out 35793640 with 24437C40), and at 345351F8h (N/S position, swap out F1AE6242 with 40C65942). Specifically, these values appear in the OVERLAY\DISC\M1_02_00.BIN file at 269B8h, 269D8h, and 269F8h.

NOTE: 00 00 00 C1 is probably better to use for the E/W position instead! This avoids conflicts with Stephanie. -- It is unknown exactly why this bug happens. Additionally, Stephanie will not follow you after restarting this checkpoint -- this happens in both versions.

It appears that changing Joshua's height to be slightly higher after giving him working position data also causes this bug, so it may be some sort of floating point error causing this bug. Working hypothesis is that if Joshua is floating when his position is changed via the game, the game checks infinite (?) units for a suitable surface underneath him, and the slanted stairs are deemed unsuitable while the flat waterplane is. However, this does NOT happen when attempting to change Joshua's height position in the JP version and Joshua spawns normally on the stairs.

However, it may not be the case that Joshua is getting pushed through the stairs - instead, in the cases where Joshua dies instantly, he is given a height value of 2 (by instruction 13E944) -- which is actually above the stairs. Changing this value from 2 to something like 1.6 or 2.4 just causes Joshua to fall back onto the stairs. Perhaps the waterplane, which is supposed to be under the stairs, spawns in at 2 for an instant?

Specifically, it does appear that the waterplane spawns in at 0.5, before moving to its correct position of about ~13.3. Additionally, a height difference of 1.5 units beneath the waterplane's top is enough to kill the player character. Therefore, the waterplane is moved to 0.5, and Joshua spawns in at 2 for some reason -- this kills Joshua instantly.

TL;DR: It appears that if Joshua is not on the stairs perfectly, he gets placed at a height of 2. Normally, Joshua should just fall a short distance and hit the stairs at around 2.851148. However, the level's big waterplane spawns in at 0.5 before being moved to around ~13.3 (which will then slowly rise to about 8). When Joshua spawns in, he is at the perfect height to clip with the waterplane and dies instantly. Additionally, when changing checkpoints to something else, there is a slight delay before Joshua is moved to a height of around 14.675, also killing him instantly under the same waterplane. Therefore, it appears that the game is actually moving Joshua relative to this waterplane for some unexplained reason.

Level Data Pointers in .ELF

Located at 0x2BE210 to 0x2BE860 in SLUS_215.01.
Pointers to memory including pointers several pieces (TODO: Follow pointers) of level data are stored here. These pointers point to another list of pointers in each level file.

For example, for environmental data:

Add a 0x5C offset to these pointers to reach the pointer for environment information in memory. This points to another pointer, which points to the start of environment information. This method can be used to find the location of environment data in each overlay file as well, since each level is always loaded in at 0x745D00 in memory.

For example, for level 01_01_05 at 0x2BE270 in SLUS_215.01, the executable points to 0x782F10.
0x782F10 + 0x5C = 0x782F6C
0x782F6C - 0x745D00 = 0x3D26C

At address 0x3D26C in OVERLAY\M1_01_05.BIN we can find another pointer to 0x782EE0.
0x782EE0 - 0x745D00 = 0x3D1E0

At address 3D1E0 we have one last pointer to 0x7827E0.
0x7827E0 - 0x745D00 = 0x3CAE0.

Therefore, environmental data values for things such as fog and colorgrading are located at 0x3CAE0 in OVERLAY\M1_01_05.BIN, and this method can also be applied to any other level file.

Offsets:
??:
5C: Environmental Data (Fog/Colorgrading etc.)
??:

Model Positioning Notes

Positioning for a tree in 1_1_5 can be found in memory at 4C395(0/4/8).

At offset 154 (from 4C3910), there's a byte which is by default 2, but can be changed to 1 to remove the lights from the tree. Immediately after at offset 158 is a pointer to B06EA0 to control the pulsing of the lights. The float responsible for that is at an offset of 10C from that pointer.

At 4C3A00 is a pointer to AB51E0, which has even more data about the model.

At AB51E4 is a pointer to info about the Christmas lights on the tree at B06DB0. At offset 0x0, there's another pointer to 4C3910 where the data here seems to come from.

...and we've gone full circle

Collision for this tree can be found at ACF9E(0/4/8).

Waterplane Notes

Setting 48FB5C to 0 skips drawing waterplanes.

These offsets likely correspond to other models as well.

For the first waterplane on Downtown Geo (right of the survival point):

pointer 680560
offset -08: Changing these values can cause the model to become reset. offset -04: Changing any of the last 3 bytes from 1 to 0 will cause the model to be invisible.
offset 00: ??
offset 04: ??
offset 08: Changing this from 1 to 0 appears to reset the model's values to their defaults.
offset 0C: ??
offset 10: Model width multiplier along the X (E/W) axis. Setting above 1 can cause culling issues.
offset 14: Model orientation value (float).
offset 18: Model orientation value (float).
offset 1C: ??
offset 20: ?? Seems to have something with water refraction effect.
offset 24: Model height multiplier along the Y axis. Setting above 1 for a waterplane will cause it to disappear.
offset 28: ?? Has some effect.
offset 2C: ?? Has some effect.
offset 30: Model orientation value (float).
offset 34: Model orientation value (float).
offset 38: Model width multiplier along the Z (N/S) axis. Setting above 1 can cause culling issues.
offset 3C: Changing from 0 causes waterplane to disappear.
offset (40, 44, or 48): points to the XYZ positions of the waterplane display (not its collision!). This is based on the center point of the waterplane.
offset 4C: Changing to any value but 1 will cause the waterplane to disappear.
offset 10C: Changes the color of the waterplane (?)

Postprocessing/Fog Notes

pointer 48FA78

If a colorgrading part is not defined, it'll just create a big orange overlay over the screen.

Colorgrading Master

offset 6304: if nonzero, all fog/postprocessing is enabled. Conversely, disabled if 0. Changed back to 1 whenever the stage culls/unculls part of the level.
offset 6308: ?? - 1 by default
offset 6310: ?? - constantly changes to 0
offset 6314: ??
offset 6318: ??
offset 631C: ??
offset 6320: defines how much of the screen, from the top, is not covered in this filter. Default 00.
offset 6324: defines how much of the screen, from the bottom, is covered in this filter. Default 0E. For example, if the previous value is 01 and this value is 02, only a thin strip of the screen near the top of the screen will be covered.
offset 6328: defines how much of the screen, from the left, is not covered in this filter. Default 00.
offset 632C: defines how much of the screen, from the right, is covered in this filter. Default 0A. For example, if the previous value is 01 and this value is 02, only a thin strip of the screen near the top of the screen will be covered.
offset 6330: changing the first byte to 01 will skip drawing these filters -- this is left alone even when the stage culls part of the level. Unsure what the last 3 bytes do.
offset 6334: changes this filter dramatically when value is changed, unsure what the explanation is.
offset 6338: ??

Colorgrading 1

offset 633C: if nonzero, part of the fog/postprocessing is enabled. Conversely, disabled if 0. This also appears to be used for passive colorgrading instead of fog in some levels, defined somewhere else in memory.
offset 6340: Setting this to 1 will disable fog (?) - setting it much higher will crash Raw Danger. In some fogless levels this appears to be set to 1, but the filter still provides some colorgrading effects.
offset 6344: ??
offset 6348: Floating point value for hue of fog. For example, 0 makes the fog appear red while 120 makes the fog appear green. 207 is a more neutral bluish color.
offset 634C: Floating point value for saturation of fog. This value goes from 0 to 1.
offset 6350: Floating point value for value of fog. This value goes from 0 to 1.
offset 6354: If changed to 0, fog will cover the entire screen.
offset 6358: ??
offset 635C: ??
offset 636C: Setting to 1 changes image to black and white mode.

Colorgrading 2

offset 6378: if nonzero, part of the fog/postprocessing is enabled. Conversely, disabled if 0.
offset 6384: Floating point value for hue.
offset 6388: Floating point value for saturation.
offset 638C: Floating point value for value.

Colorgrading 3

offset 63B4: if nonzero, part of the fog/postprocessing is enabled. Conversely, disabled if 0.
offset 63C0: Floating point value for hue.
offset 63C4: Floating point value for saturation.
offset 63C8: Floating point value for value.

Colorgrading 4

offset 63F0: if nonzero, part of the fog/postprocessing is enabled. Conversely, disabled if 0.
offset 63FC: Floating point value for hue.
offset 6400: Floating point value for saturation.
offset 6404: Floating point value for value.