User

User:Luckytyphlosion/RNG Glitches

From The Rockman EXE Zone Wiki

< User:Luckytyphlosion
Revision as of 00:11, 1 November 2022 by Luckytyphlosion (talk | contribs)

All Games

  • Shuffle Bias. See this explanation. MMBN1 is affected less as it swaps 60 times instead of ~30 (depends on game).

MMBN1

MMBN2

  • Although Chip Traders are coded to have up to 6 codes per chip, only the first 5 codes of any chip can drop. This applies to both normal draws and redraws; unlike later games, you cannot get the 6th code through a redraw. RetroChip Traders work differently and do allow you to get 6th code (thanks Greiga Master). TODO: do normal chip traders list * code in their reward lists?

MMBN3

  • BugStyle movement bug selection: Initial call has mask 0xf, selects movement bug if value is [0x4, 0x9]. Subsequent call has mask 0x2, 0x0 gives up movement bug, 0x1 gives down movement bug Doesn't skew.
  • Although Chip Traders are coded to have up to 6 codes per chip, only the first 5 codes of any chip can drop. This applies to both normal draws and redraws; unlike later games, you cannot get the 6th code through a redraw. Traders do list * code in their reward lists.

MMBN4

  • Battle selection, GMD contents
  • Can only choose 4th code for chips from a redraw.

EXE4.5

  • Tournament selection, TODO rediscover this.

MMBN5

  • GMD contents
  • Can only choose 4th code for chips from a redraw.

MMBN6

  • JP only: Can only choose 4th code for chips from a redraw.

OSS

  • GMD contents (Dump)
  • Game reseeds using MAC address, potential abuse. Code is below
int sub_2001324() {
   byte[] macAddress = new byte[6];
   RTCDate rtcDate = new RTCDate();
   RTCTime rtcTime = new RTCTime();
   
   RTC_GetDateTime(&rtcDate, &rtcTime);
   OS_GetMacAddress(&macAddress);
   
   int macSum = macAddress[0]
       + (macAddress[1] << 8)
       + (macAddress[2] << 16)
       + (macAddress[3] << 24)
       + macAddress[4]
       + macAddress[5];
   int timeSum = rtcTime.second
       + 60 * rtcTime.minute
       + 3600 * rtcTime.hour;
   int dateSum = rtcDate.day
       + rtcDate.month
       + rtcDate.year;
   
   return macSum + timeSum + dateSum;
}