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;
}