From https://forums.therockmanexezone.com/bn6-cutscene-command-docs-t5292.html Breakpoint: 0x0803853C 00 - Cmd00 Routine: 0x080376C4 if !(FlagIsOn(0x1741)) call 0x0813C3AC; call 0x08036EFE; halt; 01 p1 - Special01 p1 = Call offset Routine: 0x08037B08 call [0x08037B24 + p1]; next; 02 p1 p2 - Pause p1 = Variable offset p2 = Pause length Routine: 0x080376F4 if !([0x02011C7C] & (1 << [0x02011C62]) != 0) { [0x02011C7C] |= 1 << [0x02011C62]; if (p1 == 0xFF) var = p2; else var = [0x02011C50+p1]; [0x02011C5C+[0x02011C62]] = var; } var = [0x02011C5C+[0x02011C62]]; var--; [0x02011C5C+[0x02011C62]] = var; if (var >= 0) { [0x02011C7C] clear= 1 << [0x02011C62]; next; } else halt; 03 - Halt03 Routine: 0x080378BE halt; 04 p1 - Wait04 Routine: 0x08037790 r0 = p1 & 0x80 if ((p1 & 0x80 & [0x02009F38]) == 0 || (p1 & 0x38 & [0x02009F38]) != 0) next; else halt 05 p1 - Wait05 p1 = Value to check Routine: 0x080377B6 if ((call 0x0809E434) != p1) next; else halt; 06 - Nop06 Routine: 0x080377D0 next; 07 - Wait07 Routine: 0x080377E4 if ([0x0200A443] != 1) next; else halt; 08 - CameraMoveWait Routine: 0x080377F6 if ([0x02011C63] == 0) next; else halt; 09 p1 p2 - VarWait p1 = Variable number p2 = ? Routine: 0x08037808 if ([0x02011C50 + p1] == p2) next; else halt; 0A p1 - CallWait p1 = Variable number Routine: 0x08037826 if ([[0x02011C50 + p1]] == 0x11) next; else halt; 0B - Halt0B Routine: 0x080378BE halt; 0C - Wait0C Routine: 0x08037852 if ([0x0200DF25] & 1 != 0) next; else halt; 0D p1 p1 - FlagWait0D p1 = Flag number Routine: 0x08037866 if (FlagIsOn(p1)) next; else halt; 0E p1 p1 - FlagWait0E (exact duplicate of FlagWait0D) p1 = Flag number Routine: 0x08037880 if (FlagIsOn(p1)) next; else halt; 0F - Wait0F Routine: 0x0803789A if ([0x02000780] == 0) next; else halt; 10 - Wait10 Routine: 0x080378AC if ([0x02001010] == 0) next; else halt; 11 - Return Routine: 0x080378BE halt; 12 p1 p2 p2 p2 p2 - Cmd12 p1 = Variable offset and flag p2 = Value to write Routine: 0x080378C2 [0x02011C50 + p1] = p2; [02011C7C] clear= 1 << ((p1 - 0x1C) >> 2); [02011C7C] clear= 1 << (((p1 - 0x1C) >> 2) + 4); next; 13 p1 - WriteTo13 p1 = Variable offset Routine: 0x080378EE [02011C50 + p1] = 0x08037690; next; 14 p1 p1 p1 p1 = WriteTo14 p1 = Value to write Routine: 0x08037904 [0x02011C88] = p1; next; 15 p1 p1 p1 p1 = JumpTo p1 = Cutscene pointer Routine: 0x08035924 JumpTo p1; next; 16 p1 p2 p3 p3 p3 p3 = MainProgressJumpTo p1 = Main progress lower bound p2 = Main progress upper bound p3 = Cutscene pointer Routine: 0x08035932 MainProgress = [0x02001B86] if (MainProgress >= p1 && MainProgress <= p2) { JumpTo p3; next; } else next; 17 p1 p2 p2 p3 p3 p3 p3 - FlagOnJumpTo p1 = Variable offset p2 = Flag number p3 = Cutscene pointer Routine: 0x08035962 if (p1 != 0xFF) var = [0x02011C50 + p1]; else var = p2; if (FlagIsOn(var)) { JumpTo p3; next; } else next; 18 p1 p2 p2 p3 p3 p3 p3 - FlagRangeOnJumpTo p1 = Flag range p2 = Flag number p3 = Cutscene pointer Routine: 0x08035992 var = 0; for (n = 0; n < var; n++) if (FlagIsOn(p2 + n)) var++; if (var == p1) // if all flags p2 through p2+p1 were on { JumpTo p3; next; } else next; 19 p1 p2 p2 p3 p3 p3 p3 - FlagOffJumpTo p1 = Variable offset p2 = Flag number p3 = Cutscene pointer Routine: 0x080359BE if (p1 != 0xFF) var = [0x02011C50 + p1]; else var = p2; if !(FlagIsOn(var)) { JumpTo p3; next; } else next; 1A p1 p2 p2 p3 p3 p3 p3 - FlagRangeOffJumpTo p1 = Flag range p2 = Flag number p3 = Cutscene pointer Routine: 0x080359EE var = 0; for (n = 0; n < var; n++) if (FlagIsOn(p2 + n)) var++; if (var == p1) // if all flags p2 through p2+p1 were on { JumpTo p3; next; } else next; 1B p1 p2 p2 p2 p2 p3 p3 p3 p3 p3 p4 p4 p4 p4 - RAMCheckJumpTo p1 = p4 amount of bits (0=8, 1=16, 2=32) p2 = ? p3 = Cutscene pointer p4 = ? Routine: 0x08035A1A r0 = p2 r1 = p3 switch (p1) { default: if ([p2] == p4 & 0xFF) { JumpTo p3; next; } else next; case 1: if ([p2] == p4 & 0xFFFF) { JumpTo p3; next; } else next; case 2: if ([p2] == p4) { JumpTo p3; next; } else next; } 1C p1 p2 p3 p3 p3 p3 - VarCheckJumpTo p1 = Variable offset p2 = Value to check for p3 = Cutscene pointer Routine: 0x08037914 if ([0x02011C50 + p1] == p2) { JumpTo p3; next; } else next; 1D p1 p2 p3 p4 p4 p4 p4 - NaviCustValueJumpTo p1 = NaviCust value to get count of p2 = NaviCust value lower bound p3 = NaviCust value upper bound p4 = Cutscene pointer Routine: 0x08035A74 if (GetNaviCustValue(p1) >= p2 && GetNaviCustValue(p1) <= p3) { JumpTo p4; next; } else next; 1E p1 p1 p2 p3 p4 p5 p5 p5 p5 - ChipCountValueJumpTo p1 = Chip number p2 = Chip code p3 = Chip count lower bound p4 = Chip count upper bound p5 = Cutscene pointer Routine: 0x08035AAA if (p2 == 0xFF) ChipCount = GetTotalChipCount(p1); else ChipCount = GetChipCountOfCode(p1,p2); if (ChipCount >= p3 && ChipCount <= p4) { JumpTo p5; next; } else next; 1F p1 p2 p2 p2 p2 - IfJumpTo1F p1 = ? p2 = Cutscene pointer Routine: 0x0803793A if ([0x0200A009] == p1) { JumpTo p2; next; } else next; 20 p1 p2 p2 p2 p2 - IfJumpTo20 p1 = ? p2 = Cutscene pointer Routine: 0x0803795C if ([0x0200A009] != p1) { JumpTo p2; next; } else next; 21 p1 p2 p3 p3 p3 p3 - IfJumpTo21 p1 = ? p2 = ? (signed) p3 = Cutscene pointer Routine: 0x08035AFA result = call 0x08031A7A, [r0]=[0x02009F5C], [r0+4]=[0x02009F60], [r0+8]=[0x02009F64]+(p2<<0x10); var = result[0]; if (result[0] == 0) var = result[1] if (var == p1) { JumpTo p3; next; } else next; 22 p1 p2 p3 p3 p3 p3 - IfJumpTo22 p1 = ? p2 = ? (signed) p3 = Cutscene pointer Routine: 0x08035B44 result = call 0x08031A7A, [r0]=[0x02009F5C], [r0+4]=[0x02009F60], [r0+8]=[0x02009F64]+(p2<<0x10); var = result[0]; if (result[0] == 0) var = result[1] if (var != p1) { JumpTo p3; next; } else next; 23 p1 p2 p2 p2 p2 - NaviJumpTo p1 = Navi value p2 = Cutscene pointer Routine: 0x0803797E if (GetCurrentNavi() == p1) { JumpTo p2; next; } else next; 24 p1 p2 p2 p2 p2 - NotNaviJumpTo p1 = Navi value p2 = Cutscene pointer Routine: 0x0803797E if (GetCurrentNavi() != p1) { JumpTo p2; next; } else next; 25 p1 p2 p2 p2 p2 - TitleScreenIconJumpTo p1 = Title Screen icon count p2 = Cutscene pointer Routine: 0x080379C2 if (GetTitleScreenIconCount() == p1) { JumpTo p2; next; } else next; 26 p1 p2 p2 p2 p2 - NotTitleScreenIconJumpTo p1 = Title Screen icon count p2 = Cutscene pointer Routine: 0x080379C2 if (GetTitleScreenIconCount() != p1) { JumpTo p2; next; } else next; 27 p1 p2 p3 - FadeScreen p1 = Variable offset p2 = ? p3 = ? Routine: 0x08035D6A if (p1 != 0xFF) { var0 = [0x02011C50 + p1]; var1 = [0x02011C50 + p1 + 1]; } else { var0 = p2; var1 = p3; } FadeScreen(var0, var1); next; 28 p1 p2 - Cmd28 p1 = ? p2 = ? Routine: 0x08035D98 [02001B96] = p1; [02001B97] = p2; next; 29 p1 p2 p2 - SetFlag p1 = Variable offset p2 = Flag number Routine: 0x08035DB4 if (p1 != 0xFF) var = [0x02011C50 + p1]; else var = p2; SetFlag(var); next; 2A p1 p2 p2 - ClearFlag p1 = Variable offset p2 = Flag number Routine: 0x08035DD6 if (p1 != 0xFF) var = [0x02011C50 + p1]; else var = p2; ClearFlag(var); next; 2B p1 p2 p2 - SetFlagRange p1 = Flag range p2 = Flag number Routine: 0x08035DF8 for (n = 0; n < p1; n++) SetFlag(p1 + n); next; 2C p1 p2 p2 - ClearFlagRange p1 = Flag range p2 = Flag number Routine: 0x08035E16 for (n = 0; n < p1; n++) ClearFlag(p1 + n); next; 2D p1 p1 p1 p1 - SetCustomFlagRange p1 = Flag number array pointer (terminated by a flag number less than 0) Routine: 0x08035E34 while ([p1] >= 0) { SetFlag([p1]); p1 += 2; } next; 2E p1 p1 p1 p1 - ClearCustomFlagRange p1 = Flag number array pointer (terminated by a flag number less than 0) Routine: 0x08035E54 while ([p1] >= 0) { ClearFlag([p1]); p1 += 2; } next; 2F p1 p1 p1 p1 p2 - Write8Bit p1 = Address p2 = Value to write Routine: 0x08035EAA [p1] = p2; next; 30 p1 p1 p1 p1 p2 p2 - Write16Bit p1 = Address p2 = Value to write Routine: 0x08035EC2 [p1] = p2; next; 31 p1 p1 p1 p1 p2 p2 p2 p2 - Write32Bit p1 = Address p2 = Value to write Routine: 0x08035EC2 [p1] = p2; next; 32 p1 p2 - WriteProgress p1 = Progress data offset p2 = Value to write Routine: 0x08035EF2 [0x02001B80 + p1] = p2; next; 33 p1 p2 - Write33 p1 = ??? data offset p2 = Value to write Routine: 0x08035F0E [0x02001C04 + p1] = p2; next; 34 p1 p2 p3 - Write34 p1 = ? p2 = ? p3 = Value to write Routine: 0x08037A06 [[0x02011C50 + p1 * 4 + 0x44] + p2] = p3; next; 35 p1 p2 - SetVar p1 = Variable offset p2 = Value to write Routine: 0x08037A2A [0x02011C50 + p1] = p2; next; 36 p1 p1 p1 p1 - Cmd36 p1 = Pointer to data? Routine: 0x08035F2A call 0x08001B1C, r0=p1; next; 37 p1 p1 p1 p1 - Cmd37 p1 = Pointer to data? Routine: 0x08035F3E call 0x08002354, r0=p1; next; 38 - Cmd38 Routine: 0x08035F52 call 0x08030A30, r0=[0x02001B84], r1=[0x02001B85]; call 0x08035194; next; 39 p1 - Cmd39 p1 = ? Routine: 0x08035F6A if (p1 == 0xFF) { for (n = 0; n < 0x12; n++) call 0x08001B6C, r0=n; next; } else { call 0x08001B6C, r0=p1; next; } 3A p1 - Cmd3A p1 = Variable offset; not 0xFF Routine: 0x08037A42 call 0x08040384, r0=[0x02011C80], r1=[0x02011C50 + p1]; next; 3A FF p1 - Cmd3AFF p1 = ? Routine: 0x08037A5C call 0x08040384, r0=[0x02011C80], r1=p1; next; 3B - Cmd3B Routine: 0x08037A70 call 0x08040818; next; 3C p1 p2 - Cmd3C p1 = ? p2 = ? Routine: 0x08037A7C if (p1 != 1) call 0x08045F1C, r0=p2; else call 0x08045F2C, r0=p2; next; 3D p1 p1 p1 p1 p2 p2 p2 p2 p3 p3 p3 p3 p4 p4 p4 p4 p5 p5 p5 p5 p6 p6 p6 p6 p7 p7 p7 p7 p8 p8 p8 p8 - Cmd3D p1 = Cutscene pointer p2 = Cutscene pointer p3 = Cutscene pointer p4 = Cutscene pointer p5 = Cutscene pointer p6 = Cutscene pointer p7 = Cutscene pointer p8 = Cutscene pointer Routine: 0x08037AA0 switch (([0x02009F38] & 0x7) * 4) { case 0: JumpTo p1; default; case 1: JumpTo p2; default; case 2: JumpTo p3; default; case 3: JumpTo p4; default; case 4: JumpTo p5; default; case 5: JumpTo p6; default; case 6: JumpTo p7; default; case 7: JumpTo p8; default; } next; 3E p1 p1 p1 p1 - TryDecompBin p1 = pointer to compressed or RAW bin Routine: 0x08037AB6 if (p1 & 0x80000000 != 0) { LZ77UnCompWram(p1 & 0x7FFFFFFF, 0x02034A00); var = 0x02034A04; } else var = p1; [0x02011C80] = p1; next; 3F p1 - Special3F p1 = Call offset Routine: 0x08037B08 call [0x08037B24 + p1]; next; 40 p1 p2 p3 - Cmd40 p1 = Call offset p2 = Variable offset p3 = Call variable Routine: 0x08037B6C if (p2 != 0xFF) var = [0x02011C50]; else var = p3; call [0x08037B9C + p1], r0=var; next; 41 p1 p2 p3 p4 p4 p5 p5 p6 p6 - Cmd41 p1 = ? p2 = Variable offset p3 = ? p4 = ? (signed) p5 = ? (signed) p6 = ? (signed) Routine: 0x08037BB4 if (p1 >= 8) if ([0x02011C62] == 0) halt; if (([0x02011C7C] & 0x100) == 0) { [0x02011C7C] |= 0x100; if (p2 != 0xFF) var0 = [0x02011C50 + p2]; else var0 = p3; [0x02011C60] = var; } call [0x08037C34 + p1], r0=p4<<0xC, r1=p5<<0xC, r2=p6<<0xC; var1 = [0x02011C60]; var1--; [0x02011C60] = var1; if (var <= 0) { [0x02011C7C] clear= 0x100; next; } else halt; 42 p1 p2 p3 p3 - MovePlayer p1 = Variable offset p2 = Amount of frames p3 = Movement per frame (signed) Routine: 0x08037C44 if ([0x02011C62] != 0) { if (([0x02011C7C] & 0x100) == 0) { [0x02011C7C] |= 0x100; if (p1 != 0xFF) var0 = [0x02011C50]; else var0 = p2; [0x02011C60] = var; } var1 = (p3 << 8) * [0x08037CB4 + [0x02009F50] * 2]; var2 = (p3 << 8) * [0x08037CB4 + [0x02009F50] * 2 + 1]; call 0x0809E1FA, r0=var1, r1,=var2, r2=0; var3 = [0x02011C60]; var3--; [0x02011C60] = var3; if (var3 <= 0) { [0x02011C7C] clear= 0x100; next; } } halt; 43 p1 p2 - Cmd43 p1 = Variable offset p2 = ? Routine: 0x08037CC4 if (p1 != 0xFF) var = [0x02011C50 + p1]; else var = p2; if ([0x0200ACF5] != 0) [0x0200ACFA] = var; next; 44 p1 p1 p1 p1 - Cmd44 p1 = ? Routine : 0x08037CE4 [0x0200AD00] = p1; next; 45 00 p1 p2 p3 - Cmd4500 p1 = ? p2 = ? p3 = ? Routine: 0x08037D0A [0x02000AA0] = p1; [0x02000AA1] = p2; [0x02000AA2] = p3; next; 45 01 - Cmd4501 Routine: 0x08037D2C [0x02000AA0] = 0x40; [0x02000AA1] = 0x40; [0x02000AA2] = 0; next; 45 02 p1 p2 p3 p4 - Cmd4502 p1 = ? p2 = ? (signed) p3 = ? (signed) p4 = ? (signed) Routine: 0x08037D36 if (([0x02011C7C] & 0x200) == 0) { [0x02011C7C] |= 0x200; [0x02011C61] = p1; } [0x02000AA0] += p2; [0x02000AA1] += p3; [0x02000AA2] += p4; var = [0x02011C61]; var--; [0x02011C61] = var; if (var <= 0) { [0x02011C7C] clear= 0x200; next; } else halt; 46 00 p1 p1 - Cmd4600 p1 = ? Routine: 0x08037D90 [0x02000AA6] = p1; next; 46 01 Routine: 0x08037DA2 [0x02000AA6] = 0; next; 47 p1 p2 p3 - SetPlayerAnimation p1 = Add to current p2 = Variable offset p3 = Animation Routine: 0x08037DAC if (p2 != 0xFF) var = [0x02011C50 + p2]; else var = p3; if (p1 == 1) var += [0x02009F50]; [0x0200ACE2] = var; SetFlag(0x1719); next; 48 p1 p2 - Cmd48 p1 = ? p2 = ? Routine: 0x08037DE0 [0x0200ACE8] = [0x020057B0 + p1 * 0xD8 + 0x24]; [0x0200ACEC] = [0x020057B0 + p1 * 0xD8 + 0x28]; [0x0200ACF0] = [0x020057B0 + p1 * 0xD8 + 0x2C]; [0x0200ACE2] = [0x020057B0 + p1 * 0xD8 + 0x14]; SetFlag(0x1719); [0x02009F50] = p2; next; 49 p1 p2 p3 p3 p4 p4 p5 p5 p6 p6 p6 p6 - Cmd490N p1 = ? (= 0x0N) p2 = ? p3 = ? p4 = ? p5 = ? p6 = ? Routine: 0x08037E4C [0x02011C50 + ((p1 & 0xF) << 2) + 0x44] = call 0x080047E0, r0=p2, r1=p3<<0x10, r2=p4<<0x10, r3=p5<<0x10, r4=p6; next; 49 p1 p2 p3 p3 p4 p4 p5 p5 p6 p6 p6 p6 - Cmd491N p1 = ? (= 0x1N) p2 = ? p3 = ? p4 = ? p5 = ? p6 = ? Routine: 0x08037E96 [0x02011C50 + ((p1 & 0xF) << 2) + 0x44] = call 0x080047E0, r0=p2, r1=(p3<<0x10)+[0x02001B9C], r2=(p4<<0x10)+[0x02001BA0], r3=(p5<<0x10)+[0x02001BA4], r4=p6; next; 49 p1 p2 p3 p4 p4 p5 p5 p6 p6 p7 p7 p7 p7 - Cmd492N p1 = ? (=0x2N) p2 = ? p3 = ? p4 = ? p5 = ? p6 = ? p7 = ? Routine: 0x08037EFA [0x02011C50 + ((p1 & 0xF) << 2) + 0x44] = call 0x080047E0, r0=p3, r1=(p4<<0x10)+[0x020057B0+p2*0xD8+0x24], r2=(p5<<0x10)+[0x020057B0+p2*0xD8+0x28], r3=(p6<<0x10)+[0x020057B0+p2*0xD8+0x2C], r4=p7; next; 49 p1 - Cmd493N p1 = ? (=0x3N) Routine: 0x08037F6E if ([0x02011C94 + ((p1 & 0xF) << 2)] != 0) { [0x02011C94 + ((p1 & 0xF) << 2)] = 0; [0x02011E94 + (([0x02011C50 + ((p1 & 0xF) << 2) + 0x3] >> 5) << 2)] clear= 0x80000000 rotateright [0x02011C94 + ((p1 & 0xF) << 2) + 0x3]; [0x02011C94 + ((p1 & 0xF) << 2)] = 0; call 0x08002D52, r5=[0x02011C94+((p1&0xF)<<2)]; } next; 49 p1 - Cmd494N p1 = ? (=0x4N) Routine: 0x08037F90 for (n = 0x44; n <= 0x6C; n += 4) if ([0x02011C50 + n] != 0) { [0x02011C50 + n] == 0; [0x02011E50 + n + (([0x02011C50 + ((p1 & 0xF) << 2) + 0x3] >> 5) << 2)] clear= 0x80000000 rotateright [0x02011C50 + n + ((p1 & 0xF) << 2) + 0x3]; [0x02011C50 + n + ((p1 & 0xF) << 2)] = 0; call 0x08002D52, r5=[0x02011C50+n+((p1&0xF)<<2)]; } next; 4A 00 p1 p1 p1 p1 - Cmd4A00 p1 = ? Routine: 0x08037FD4 call 0x08003570, r0=p1; next; 4A 01 p1 - Cmd4A01 p1 = ? Routine: 0x08037FE6 call 0x080035A2, r0=p1; next; 4A 02 p1 p1 p1 p1 - Cmd4A02 p1 = ? Routine: 0x08037FF8 call 0x08030A60, r0=p1; next; 4A 03 - Cmd4A03 Routine: 0x0803800A call 0x08035134; next; 4A 04 - Cmd4A04 Routine: 0x08038014 call 0x0803516C; next; 4A 05 - Cmd4A05 Routine: 0x0803801E call 0x080351B4; next; 4B p1 p1 p1 p1 - Call p1 = ASM pointer Routine: 0x08038028 if (call p1) next; else halt; 4C p1 - Cmd4C4N p1 = n/a (=& 0x40) Routine: 0x08038098 call 0x08005F00, r0=[0x02011BC4], r1=[0x02011BC1]-1, r2=[0x02011BC2]; next; 4C p1 p2 p2 p2 p2 - Cmd4C2N p1 = n/a (=& 0x20) p2 = ? Routine: 0x080380A6 [0x02011C84] = p2; next; 4C p1 p2 p3 p3 p3 p3 - Cmd4C p1 = n/a (!=& 0x60) p2 = ? p3 = ? Routine: 0x08038056 if ((p1 & 0x80) != 0) var = [0x02011C84]; else var = p3; if ((p1 & 1) == 0) { call 0x08005F00, r0=var, r1=0, r2=p2; next; } else { call 0x08005F14, r0=var, r1=0, r2=p2; next; } 4D p1 p1 - PlayNewSound p1 = Sound number Routine: 0x080380B4 PlayNewSound(p1); next; 4E p1 p1 - PlaySound (?) p1 = Sound number (signed) Routine: 0x080380C8 if (p1 < 0) { call 0x08036E44; call 0x08036E78; next; } else { PlaySound(p1); next; } 4F p1 p1 p2 p3 - SoundCmd4F p1 = Sound number p2 = ? p3 = ? Routine: 0x080380EA call 0x080006A2, r0=p1, r1=p2, r2=p3; next; 50 p1 p2 - SoundCmd50 p1 = ? p2 = ? Routine: 0x0803810E call 0x0800068A, r0=p2, r1=p1; [0x02001B8F] = 0x63; next; 51 - StopSound Routine: 0x08038132 StopSound; next; 52 p1 p2 p3 - Cmd52 p1 = ? p2 = ? p3 = ? Routine: 0x0803813E if (p1 == 1) call 0x0803CE08, r0=p2, r1=p3; else call 0x0803CD98, r0=p2, r1=p3; next; 53 p1 p2 - Cmd53 p1 = Variable offset p2 = ? Routine: 0x08035F98 if (p1 != 0xFF) var = [0x02011C50 + p1]; else var = p2; call 0x08033FC0, r0=var; next; 54 00 p1 p1 p1 p1 - MoveCamera p1 = Camera movement data pointer Routine: 0x08038176 [0x02011C84] = p1; call 0x08036F98, r0=p1; [0x02011C63] = 1; next; 54 p1 - ResetCamera p1 = n/a (!= 0) Routine: 0x0803818E [0x02011C84] = 0; call 0x08036FAA; [0x02011C63] = 0; next; 55 p1 p1 - StartFreeBattle; p1 = Freefight number Routine: 0x080381A0 if ([0x02001B84] < 0x80) { SetBeastTimeToMax; call 0x08015C32; } call 0x08005BC8, r0=GetFreeFightOffset(p1), r1=1; call 0x0803522E, r0=GetFreeFightOffset(p1); call 0x08006270, r0=0x2C, r1=0x10; next; 56 - StartRandomBattle Routine: 0x080381E0 call 0x08005BC8, r0=(call 0x080AA5E4), r1=1; call 0x08006270, r0=0x2C, r1=0x10; next; 58 p1 p1 p1 p1 p2 p2 p2 p2 p3 p3 p3 p3 - Cmd58 Routine: 0x080381FA call 0x08002468, r0=p1, r1=p2, r2=p3; next; 59 - Cmd59 Routine: 0x0803821E call 0x08002484; next; 5A p1 p2 p3 - Cmd5A p1 = ? p2 = ? p3 = unused Routine: 0x0803822A call 0x080302A8, r0=p1, r1=p2; next; 5B p1 - Nop5B p1 = unused Routine: 0x08038246 next; 5C - Nop5C Routine: 0x08038256 next; 5D - Nop5D Routine: 0x0803825E next; 5E - Nop5E Routine: 0x08038266 next; 5F - Cmd5F Routine: 0x0803826E call 0x08001974; next; 60 p1 - Cmd60 p1 = ? Routine: 0x0803827A call 0x08003914, r0=p1; next; 61 - Cmd61 Routine: 0x0803828E call 0x08003940; next; 62 p1 - Cmd62 p1 = ? Routine: 0x0803829A call 0x08003A64, r0=p1; next; 63 - Cmd63 Routine: 0x080382AE call 0x08003A90; next; 67 p1 p1 p2 - Cmd67 p1 = ? p2 = ? Routine: 0x080382BA for (n = 0; n < p2; n++) call 0x0813E5DC, r0=p1+n; next; 68 p1 p1 - Cmd68 p1 = ? Routine: 0x080382DE call 0x08006E70, r0=p1; next; 69 - Cmd69 Routine: 0x080382F2 call 0x080340F6; next; 6A p1 - Cmd6A p1 = ? Routine: 0x080382FE [0x02001C0B] = [0x02001B81]; [0x02001B81] = p1; call 0x08120DF0; call 0x0813C3AC; call 0x0803CEB8; next; 6B p1 p1 p2 - Cmd6B p1 = ? p2 = ? Routine: 0x08038322 for (n = 0; n < p2; n++) call 0x0802F238, r0=p1+n; next; 6C p1 p1 p1 p1 p2 p2 p2 p2 - Cmd6C p1 = ? p2 = ? Routine: 0x08038346 call 0x080356F8, r0=p1, r1=p2; next; 6F p1 p2 p2 - Cmd6F p1 = ? p2 = ? Routine: 0x08038362 if (p1 != 1) call 0x0803CFF8, r0=p2; else call 0x0803D040, r0=p2; next; 70 p1 p2 p2 - Cmd70 p1 = ? p2 = ? Routine: 0x08038386 if (p1 != 1) call 0x0803D080, r0=p2; else call 0x0803D0C8, r0=p2; next; 73 p1 p2 p2 p3 p4 - Cmd73 p1 = ? p2 = ? p3 = ? p4 = ? Routine: 0x080383AA if (p1 != 1) call 0x08021AEE, r0=p2, r1=p3, r2=p4; else call 0x08021B92, r0=p2, r1=p3, r2=p4; next; 74 p1 p2 p2 p3 p4 - Cmd74 p1 = ? p2 = ? p3 = ? p4 = ? Routine: 0x080383DE if (p1 != 1) call 0x0803D108, r0=p2, r1=p3, r2=p4; else call 0x0803D128, r0=p2, r1=p3, r2=p4; next; 75 00 p1 p1 p1 p1 - Cmd7500 p1 = ? Routine: 0x08038420 [0x02011E70] = p1; next; 75 01 - Cmd7501 Routine: 0x0803842E [0x02011E70] = 0; next; 76 p1 p2 - Cmd76 p1 = ? p2 = ? Routine: 0x0803843C if (p1 == 0) { [0x020010F0 + p2] = [0x02001B86]; [0x02001B86] = 0xFF; } else [0x02001B86] = [0x020010F0 + p2]; next; 77 p1 - Cmd77 p1 = ? Routine: 0x08038466 ClearFlag(0x682); ClearFlag(0x85F); ClearFlag(0xABA); ClearFlag(0xCDC); ClearFlag(0xCE0); SetFlag(0x120); if (p1 == 0) { if (FlagIsOn(0x67B)) SetFlag(0x682); if (FlagIsOn(0x856)) SetFlag(0x85F); if (FlagIsOn(0xA44)) SetFlag(0xABA); if (FlagIsOn(0xC6D)) SetFlag(0xCDC); if (FlagIsOn(0xCA7)) SetFlag(0xCE0); ClearFlag(0x120); } next; 78 p1 p1 p2 - Cmd78 p1 = ? p2 = ? Routine: 0x08038484 for (n = 0; n < p2; n++) call 0x0813F9A0, r0=p1+n; next; 79 p1 p2 p3 p4 p4 p4 p4 - IfJumpTo79 p1 = unused p2 = unused p3 = unused p4 = Cutscene pointer if ((call 0x0803CE28, r0=0x2C)) if (([0x0200A270] & 1) != 0) { JumpTo p4; next; } next; 7A - SetBeastTimeToMax Routine: 0x080384D0 SetBeastTimeToMax; next; 7B p1 p2 p3 p4 p4 p4 p4 - IfJumpTo7B p1 = unused p2 = unused p3 = unused p4 = Cutscene pointer Routine: 0x080384DC if ([0x0200578E] == 4) { JumpTo p4; next; } else next; 7C p1 p2 p3 p4 p4 p4 p4 p5 p5 p5 p5 - LanMegaManJumpTo p1 = unused p2 = unused p3 = unused p4 = Cutscene pointer (if controlling Lan) p5 = Cutscene pointer (if controlling MegaMan) Routine: 0x080384F8 if ([0x02001B84) < 0x80) { JumpTo p4; next; } else { JumpTo p5; next; }