546 - bombShield(int a, int script)


Sets the bomb invulnerability flag (a=0 false, a=1 true), the caller's ANM script will change to script when a bomb is active.

Hisami's laser crash


Specifications


  • Versions: 1.00a - 1.10c
  • Difficulty: Easy - Normal - Hard - Lunatic
  • Mode: Story mode - VS mode - Online VS mode
  • Shottype: Reimu - Marisa - Sanae - Ran - Aunn - Nazrin - Seiran - Rin - Tsukasa - Mamizou - Yachie - Saki - Yuuma - Suika - Biten - Enoko - Chiyari - Hisami - Zanmu

What happens


When fighting as Hisami, she likes to spawn lasers. When there are too many lasers at once, the game crashes. This can happen regardless of difficulty but this is the most prevalent on higher difficulties as higher difficulties spawn more lasers.

Note that this bug is only specific to version 1.00a.

Screenshot of Hisami fighting Hisami
Figure 1: A screenshot of the game moments before the game crashes. The CPU's side is being overwhelmed by lasers.

How it happens


In order to trigger the crash, the following conditions must be met:

  1. Player 1 can either be a real player or a CPU, but Player 2 must be a CPU;
  2. Player 1 must choose Hisami as their shottype;
  3. Enough lasers need to spawn on Player 2's side

The easiest way to trigger this is to go into VS mode on Lunatic mode on CPU vs CPU.

Why it happens


The CPU has a fixed length array that all keep track of everything it can collide with. This fixed length array has a size of 8,000, so in most normal cases, even if the bullet cap of 2,000 and the laser cap of 512 are reached, the CPU should be able to handle the amount of nodes without the array overflowing. This fixed length array does not have any buffer overflow protection. This means that if there is too much for the CPU opponent to handle, then the array would experience buffer overflow causing the game to crash.

The way to max out all the slots in the array is through the use of Hisami's lasers. One of Hisami's lasers contains exactly 96 nodes. To make the array of size 8,000 not overflow it means that there can be at most 8000 / 96 = 83.3, or 83 lasers on the CPU's side. This is the maximum amount of lasers the CPU can handle, assuming that there are no other hitboxes that interfere. Realistically, the maximum number of lasers the array can handle is below the 84 figure since there are hitboxes from other sources that also take up slots in the array.



Videos